我尝试将我的Ember应用程序升级到最新的Ember 1.13.2,因此我尝试将所有Ember.ArrayController
替换为Ember.Controller
。
我的博客的类别控制器出了问题。从我的服务器检索的数据如下所示:
"posts": [
{
"category": {
"id": "1",
"name": "tech"}
"title": "my title",
"body": "post-content",
"isPublished": true,
},
...
]
在我的类别控制器中,我需要class-id和category-name。
使用Ember.ArrayController
我使用objectAt(0)
从模型中为此目的加载的第一篇文章中获取两者,但这不再适用于Ember.Controller
。
如何在控制器中获取这两个属性?
此代码不再有效:
breadCrumb: function(){
return this.objectAt(0).get('category').get('name');
}.property('model.[]'),
categoryId: function(){
return this.objectAt(0).get('category').get('id');
}.property('model.[]'),
答案 0 :(得分:2)
您只需直接从模型中获取它,而不是使用代理行为:
return this.get('model').objectAt(0).get('category').get('name');
或者,如果你喜欢速记:
return this.get('model.firstObject.category.name');
编辑:当我在这里时,您也可以将它们声明为别名:
breadCrumb: Ember.computed.alias('model.firstObject.category.name'),
如果您不这样做,您应该更改您的从属密钥。如果嵌套属性发生更改,则不会更新您的属性。您需要使用model.firstObject.category.name
或model.@each.category.name
等内容。