ObjectAt(0)不能与Ember.Controller一起使用

时间:2015-06-26 21:21:08

标签: ember.js ember-data ember-cli

我尝试将我的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.[]'),

1 个答案:

答案 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.namemodel.@each.category.name等内容。