0

据我了解,emberjs 中的模板从控制器获取数据。因此,获取model数据并将其呈现给模板是控制器的工作。

此处的文档将模型与如下路线相关联:

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());
  }
});

像这里给出的第一个例子一样吗?

这两种方式做同样的事情吗?

4

1 回答 1

1

这两种方式做同样的事情吗?

几乎。在这两种情况下,控制器的content属性都将设置为App.Post.find(). 两者都会起作用

也就是说,使用模型挂钩是执行此操作的首选方式。如果你的模型钩子返回一个承诺,路由器将等待它解决后再继续。setupController 钩子不是这种情况。通常你会想要避免任何与setupController钩子异步的东西。

于 2013-08-15T22:45:35.910 回答