我可以想到4个选项:
1)在路由器中:
connectOutlets: function(router) {
router.get('applicationController').connectOutlet(outlet, controller/view, router.get('store').findAll(Model);
}
这将在每次调用时调用connectOutlet
findAll
2)在控制器的初始化中:
App.MyController = Ember.ArrayController.extend({
init: function() {
this._super();
this.set('content', App.router.get('store').findAll(Model));
}
});
这将仅在第一次实例化控制器时调用 findAll。
3)直接分配给控制器的内容:
App.MyController = Ember.ArrayController.extend({
content: App.router.get('store').findall(Model)
});
这也只会在第一次实例化控制器时调用 findAll ,但是如果我这样做,我会收到一个错误 -Uncaught TypeError: Cannot call method 'get' of undefined
所以路由器可能还没有被实例化。
4) 从路由器调用控制器的函数来分配数据:
connectOutlets: function(router) {
router.get('applicationController').connectOutlet(outlet, controller/view, router.get('store').findAll(Model);
router.get('myController').getData();
}
App.MyController = Ember.ArrayController.extend({
getData: function() {
this.set('content', App.router.get('store').findAll(Model));
}
});
与第一个选项相同的评论。
我的问题是,在控制器中分配数据的首选方式或“Ember 方式”是什么?