在ember的官方指南中,它提供了两种设置控制器底层对象的方法。 首先是设置模型属性:
App.SongsRoute = Ember.Route.extend({
setupController: function(controller, playlist) {
controller.set('model', playlist.get('songs'));
}
});
其次是设置内容属性:
MyApp.listController = Ember.ArrayController.create();
$.get('people.json', function(data) {
MyApp.listController.set('content', data);
});
这两个属性是否代表相同的东西?我应该使用哪种方式?
答案 0 :(得分:7)
看起来他们是一回事,
Ember.ControllerMixin = Ember.Mixin.create(Ember.ActionHandler, {
....
model: Ember.computed.alias('content'),
....
model
属性是content
的别名。
此外,
https://github.com/emberjs/ember.js/blob/v1.3.0/packages/ember-routing/lib/system/route.js#L849
提及,
By default, the `setupController` hook sets the `content` property of the controller to the `model`.
<强>更新强> 从v1.7.0开始不推荐使用,代码放在mixin中。 https://github.com/emberjs/ember.js/blob/v2.12.0/packages/ember-runtime/lib/mixins/controller.js 随着相关的弃用mixin。 https://github.com/emberjs/ember.js/blob/v2.12.0/packages/ember-runtime/lib/mixins/controller_content_model_alias_deprecation.js
答案 1 :(得分:1)
在文档 - http://emberjs.com/api/classes/Ember.Controller.html#property_model中 - 它清楚地指出,在检索或修改控制器的模型时,应该使用model属性而不是content属性。