mer*_*lin 9 javascript ember.js
在ember的官方指南中,它提供了两种设置控制器底层对象的方法.首先是设置模型属性:
App.SongsRoute = Ember.Route.extend({
setupController: function(controller, playlist) {
controller.set('model', playlist.get('songs'));
}
});
Run Code Online (Sandbox Code Playgroud)
第二是设置内容属性:
MyApp.listController = Ember.ArrayController.create();
$.get('people.json', function(data) {
MyApp.listController.set('content', data);
});
Run Code Online (Sandbox Code Playgroud)
这两个属性是否代表相同的东西?我应该使用哪种方式?
看起来他们是一回事,
Ember.ControllerMixin = Ember.Mixin.create(Ember.ActionHandler, {
....
model: Ember.computed.alias('content'),
....
Run Code Online (Sandbox Code Playgroud)
该model属性是别名content.
也,
https://github.com/emberjs/ember.js/blob/v1.3.0/packages/ember-routing/lib/system/route.js#L849
提到,
Run Code Online (Sandbox Code Playgroud)By default, the `setupController` hook sets the `content` property of the controller to the `model`.
UPDATE 从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