正如我所强调的那样,emberjs中的模板从控制器获取数据。因此,掌握model
数据并将其呈现给模板是控制器的工作。
文档here将模型与这样的路线相关联:
App.FavoritesRoute = Ember.Route.extend({
model: function() {
// the model is an Array of all of the posts
return App.Post.find();
}
});
在这种情况下,会自动生成ArrayController
。
但是,还有setupController
功能。那么,我们也可以这样做:
App.FavoritesRoute = Ember.Route.extend({
setupController: function(controller) {
controller.set('model', App.Post.find());
}
});
作为给定here的第一个例子吗?
这两种方式做同样的事情吗?
答案 0 :(得分:1)
这两种方式做同样的事情吗?
几乎。在这两种情况下,控制器的content
属性都将设置为App.Post.find()
的结果。两者都将工作。
也就是说,使用模型钩子是首选方法。如果模型挂钩返回一个promise,路由器将等待它解析,然后再继续。 setupController挂钩不是这种情况。通常你会想避免setupController
钩子中的任何异步。