来,下次调用就会快一点。如果匹配不到组件,则方法返回
null。这意味着,如果你的逻辑
是建立在某个视图上,而且这个视图可能还未创建到页面上,你就需要在你的逻辑处理中
检查一下,要确保
getXxxx 方法返回一个正确的结果。另外,如果选择器匹配多个组件,只
有第一个匹配到的组件会被返回,因此,选择器最好对应单独的组件。最后,当你销毁一个
正在引用的组件后,调用
getXxx 获得这个组件则会返回 null,除非选择器能匹配别的组件。
在
application 开始时分清控制层级
当程序启动时,我们想要加载用户的电台。要完成这个需求,当然你可以使用
onReady 方
法,然后把这部分业务逻辑放在里面,不过,
MVC 架构提供了 onLauch 方法,他会在所有
的控制器、模型和存储实例化后且视图外框绘制后立刻执行。这种方式清晰的把全局应用逻
辑和控制器具体的逻辑分开。
第一步
app/controller/Station.js
...
onLaunch: function() {
// Use the automatically generated getter to get the store
var stationsStore = this.getStationsStore();
stationsStore.load({
callback: this.onStationsLoad,
scope: this
});
}
...
把
Station store 的 load 方法在 Station 控制器的 onLauch 方法里面调用,这看起来是最好的
调用方式。正如你所见,我们配置了一个
callback 回调方法,一旦 store 加载完后就会执行
这个回调函数。
第二步
app/controller/Station.js
...
onStationsLoad: function() {
var stationsList = this.getStationsList();
stationsList.getSelectionModel().select(0);
}
...
在这个回调中,我们通过自动生成的
getStationList 方法来获得 StationList 视图实例的引用,
然后选择第一个选项。这会触发一个在
StationsList 视图触发 selectionchange 事件
第三步
app/controller/Station.js
...
init: function() {
this.control({