0

コントローラーで計算されたプロパティを作成するときにコントローラーのモデルにアクセスしようとすると、次のエラーが発生します。

model.uniqBy is not a function

app/controller/ticket.js

export default Ember.Controller.extend({
  statuses: Ember.computed('model', function() {
      var model = this.get('model');
      return model
              .uniqBy('status')
              .map(function(i) { return i.status; })
              .toArray();
  }),
});

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

4

1 に答える 1

1

Ember.computed.uniqBy

特定のキーによって一意性が決定される、配列からのすべての一意の要素を含む新しい配列を返す計算されたプロパティ

計算されたプロパティの代わりにこれを試してください

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

編集

このプロパティで ember 計算マップを使用して、必要に応じて配列を微調整できます。たとえば、次のようになります。

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('model.@each.status', function()

それが役に立てば幸い

于 2016-06-18T17:15:23.313 に答える