Ember - 控制器的内容和模型属性有什么区别? [英] Ember - What's the difference between controller's content and model property

查看:123
本文介绍了Ember - 控制器的内容和模型属性有什么区别?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

这两个属性是否代表相同的东西?我应该使用哪种方式?

解决方案

似乎他们是一样的,



https://github.com/emberjs/ember.js/blob/v1.3.0/packages/ember-runtime/lib/controllers/controller.js#L44

  Ember.ControllerMixin = Ember.Mixin.create(Ember.ActionHandler,{
....
model:Ember.computed.alias 'content'),
....

属性是内容的别名



另外,



https://github.com/emberjs/ember.js/blob/v1.3.0/packages/ember-routing/lib/system/route.js#L849



其中提到,


 默认情况下,`setupController`钩子将`b $ b的`content`属性设置为`model`。 


更新
已弃用自从v1.7.0和代码放在一个混合。
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


In ember's official guide, it provides two ways to set the controller's underlying object. First is setting the model property:

App.SongsRoute = Ember.Route.extend({
    setupController: function(controller, playlist) {
        controller.set('model', playlist.get('songs'));
    }
});

Second is setting the content property:

MyApp.listController = Ember.ArrayController.create();

$.get('people.json', function(data) {
    MyApp.listController.set('content', data);
});

Are these two properties represent the same thing? Which way should i use?

解决方案

It seems they are the same thing,

https://github.com/emberjs/ember.js/blob/v1.3.0/packages/ember-runtime/lib/controllers/controller.js#L44

Ember.ControllerMixin = Ember.Mixin.create(Ember.ActionHandler, {
....
model: Ember.computed.alias('content'),
....

The model property is an alias for content.

Also,

https://github.com/emberjs/ember.js/blob/v1.3.0/packages/ember-routing/lib/system/route.js#L849

which mentions that,

By default, the `setupController` hook sets the `content` property of
the controller to the `model`.

UPDATE Deprecated since v1.7.0 and the code placed in a mixin. https://github.com/emberjs/ember.js/blob/v2.12.0/packages/ember-runtime/lib/mixins/controller.js Along with the related deprecation mixin. https://github.com/emberjs/ember.js/blob/v2.12.0/packages/ember-runtime/lib/mixins/controller_content_model_alias_deprecation.js

这篇关于Ember - 控制器的内容和模型属性有什么区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆