2016-06-18 1 views
0

コントローラ上の計算されたプロパティを作成する際、コントローラのモデルにアクセスしようとすると、私は次のエラーを取得:- Ember2.5

model.uniqBy is not a function

app/controller/ticket.js

コントローラーに与えているモデルは、this.store.findAll('ticket');から返されたコレクションですが、反復しようとすると上記のエラーが発生しているようです。モデルに与えられたコレクションは、Ember.Enumerableオブジェクトではないと考えられますか? DS.Store経由でコレクションにアクセスする必要があります(この場合、コントローラにモデルを渡す必要性がわかりません)。

+0

何を得ようとしていますか?チケットのコレクションに格納されているステータスフィールドの一意の値の配列? –

+0

@MirzaMemicはい – a7omiton

+0

あなたは2.7以前のバージョンを使用する必要があります。ember 2.7はuniqByマクロを導入しました。 http://emberjs.com/blog/2016/06/08/ember-2-6-and-2-7-beta-released.html – kumkanillam

答えて

1

Ember.computed.uniqBy

A computed property which returns a new array with all the unique elements from an array, with uniqueness determined by specific key

代わり

あなたが微調整あなたの配列には、このプロパティに燃えさし計算マップを使用することができ、あなたの計算されたプロパティ

statuses: Ember.computed.uniqBy('model', 'status') 

EDITのためにこれを試してみてください必要であれば、例えばこのように

status: Ember.computed.map('statuses', function(status, index) 
    return status.toUpperCase() + '!'; 
}) 

もう一つの方法は、ここに

https://guides.emberjs.com/v2.6.0/object-model/computed-properties-and-aggregate-data/

説明するように計算されたプロパティが動的集計構文を使用していますので、Ember.computed( 'モデル。@ each.status'、機能()

はそれが

を役に立てば幸いということです
+0

ありがとうございますが、これはオブジェクトの配列を返します、私は文字列(例えば、['done'、 'waiting'])の配列を返す必要があります また、私は問題がember計算されているとは思わない、それは方法かもしれない私はモデルを読んでいるのですか?それがチケットのコレクションなら、私はEmber.Enumerableメソッドを呼び出すことができるはずだと確信していますが、そのようには見えません – a7omiton

+0

ステータスに依存し、マップ関数を使用する別の計算プロパティを作成してみませんか? statusesAsStrings:Ember.computed( 'statuses'、function()....など)ここでは、フィルタリングする必要はありません。ユニークな状態ですでに利益を得ているので –

+0

する必要はありません。P – a7omiton