のフィルタがあります。初期値は初期化されていますが、決して更新されません。 editstateはサービスです。この場合は、公開された変数のみを提供します。つまり、editstate.filterValueとeditstate.filterFieldが変更されると、フィルタが更新されるはずです。computed.filter()を更新するように強制しますか?
しかし、そうではありません。
私はそれらもローカルの計算値にしようとしましたが、サイコロはありませんでした。これまでに動作する唯一のプログラム的なことは、ハンドルバー{{#ifトグル(toggle)}を使用してコンポーネント全体のアンレンダリングと再レンダリングを行うことです。
export default Ember.Component.extend({
store: Ember.inject.service(),
editstate: Ember.inject.service('edit-state'),
filteredList: Ember.computed.filter('model', function(current, index, all) {
return current.get(Ember.get(this.get('editstate'), 'filterField')) == Ember.get(this.get('editstate'), 'filterValue');
}),
私は何が欠けていますか?フィルタを再計算したり、明示的にこれらの値を見るよう指示するAPIはありません。
更新:私は私の目標を達成するひどいハック方法が見つかりました:私のサービスでは、私はを作成するが、私は、ちょうど更新を強制的にフィルタリングしていたモデルのレコードを保存しないでください。フィルタのパラメータが変わるたびに、そのレコードを現在の時間(ミリ秒)で更新します。もちろん、それは常にフィルターによって除外されます。
これは醜いです、それはおそらく邪悪です...もっと良い方法がありますか?
私は取得しています:
またはそれ以上読み"; [Ember source from filter](https://github.com/emberjs/ember.js/blob/v2.15.3/packages/ember-runtime/lib/computed/reduce_computed_macros.js#L309)のフィルタのみを表示します(1つのdependentKey値)(https://github.com/emberjs/ember.js/blob/v2.15.3/packages/ember-runtime/lib/computed/reduce_computed_macros.js#)のみを処理する1つのキー(array_macro)を受け取りますL34)。 別の機能を使用すべきですか?それらの変数を追加する他の方法? – TCat
これは私の間違いです、コード編集 – ykaragol
また、 'model'の更新を扱うためには、計算された定義で' model'の代わりに 'model. []'を使うことを検討してください。 [computed-properties-and-aggregate-data]を参照してください(https://guides.emberjs.com/v2.16.0/object-model/computed-properties-and-aggregate-data/#toc_code-code-vs-code-各コード) – ykaragol