2014-01-13 28 views
1

這似乎是一個沒有腦子給我,但不能得到這個工作的時候獲得的hasMany ID:Ember.js無法使用.filter()

ApplicationRoute:

model: function() { 
    this.controllerFor('categories').set('model', this.store.find('category')); 
} 

CategoriesController:

App.CategoriesController = Ember.ArrayController.extend(); 

ArticlesRoute:(使用查詢面值ams-new)

model: function(params) { 

    if (params.category) { 
     return this.store.find('article').filter(function(item) { 
      console.log(item.get('category.id'); // => undefined 
      return (item.get('category.id') === params.category); // => always false 
     }); 
    } else { 
     return this.store.find('article'); 
    } 
} 

正如你可以看到的是上述代碼的問題。 item.get('category.id')簡單確實總是返回undefined。然而,文章確實有定義的類別:

REST響應:(包括關係值)

{ 
    "articles":[ 
     { 
     "id":116, 
     "name": "Article 1" 
     "category":[ 
      11 
     ], 
     }, 
     { 
     "id":115, 
     "name": "Article 2" 
     "category":[ 
      6 
     ], 
     }, 
     { 
     "id":114, 
     "name": "Article 3" 
     "category":[ 
      11 
     ], 
     } 
    ], 
    "categories":[ 
     { 
     "id":6, 
     "name":"Category 1", 
     }, 
     { 
     "id":11, 
     "name":"Category 2", 
     } 
    ], 
} 

編輯:item.get('category')並在控制檯返回<DS.ManyArray:ember747>

回答

1

我已經找到了。

HasMany是一個對象數組。這樣我們必須使用findBy來搜索ID。 (糾正我錯了)。 使用item.get('category').findBy('id', params.category)按ID篩選。