API から Ajax 経由で取得したオブジェクトのリストがあります。これは次のようなものです。
App.Card = Ember.Object.extend({
name: "",
color: ""
});
App.cardsController = Ember.ArrayController.create({
content: [],
createCard: function(data) {
this.pushObject(App.Card.create(data));
},
loadCards: function() {
// Fetch API and use createCard
}
});
を使用するときは{{#each App.cardsController}}
、コントローラー内のすべてのカードを一覧表示します。
しかし、それらを色でフィルタリングしたいと思います。リスト (コントローラのコンテンツ内) をフィルタリングして表示するにはどうすればよいですか?
私はこのアプローチを試しました:
内部にこのコードを追加しましたApp.cardsController
:
filterCardsByColor: function() {
array = this.get('content').filter(function(item, index) {
return item.get('color') == 'red';
});
return array;
}.property('content.@each')
{{#each App.cardsController.filterCardsByColor}}
そして、私の見解に追加されました。
しかし、Chrome コンソールで次のエラーが表示されます。
Uncaught TypeError: Object [object Object] has no method 'addArrayObserver' ember.min.js:18
私が間違っていることは何ですか?または、どうすればよいですか?そのロジックをビューに移動する必要がありますか? どのように?array
内にラップしようとEmber.Array.create(array)
しましたが、問題は解決しませんでした。
おまけ: filterCardsByColor にパラメーターを送信して、'red'
カードや'yellow'
カードなどを要求することは何とか可能ですか?