2017-09-17 7 views
0

こんにちは私は少しemberの作品が混乱している、私は特定のユーザーのためのタスクを一覧表示することです作成しているアプリを持っている。私のモデルは次のとおりです。リロードemberモデル

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    title: DS.attr('string'), 
    location: DS.attr('string'), 
    date: DS.attr('date'), 
    archive: DS.attr('boolean'), 
    user: DS.attr('string'), 
}); 

これは、タスクリストにタスクを追加するときです。しかし、私は私が私のルートでこれを使用し、私のタスクリスト内のすべてのタスクを取得するときのために:私は私のコントローラにこれを追加しましたタスクのためのすべてのユーザーの私のフィルタリングのための

model: function() {  
     return this.store.findAll('task'); 
    } 

filteredModel: Ember.computed('model', function(){ 
     let model = this.get('model'); 

     return model.filter(function(item){ 
      return item.data.user == this.get('session.user.email'); 
     }); 

    }), 

これはすべて正常に動作します。しかし、タスクリストに新しいタスクを追加すると、タスクリストが更新されないので、ページをリロードする必要があります。ページを更新せずに自動的にこれを行うことはできますか?

答えて

1

findAllによって返された配列はライブ配列であり、常にストア内のすべてのレコードを含みます。ただし、CPに間違った依存キーがあります。依存キーには.[]または[email protected]?が含まれているか、配列の変更をリッスンしません。 userプロパティを使用するため、[email protected]にする必要があります。また、おそらく、現在のユーザーを依存関係キーに追加する必要があります。

最後に、フィルタ機能のthisがフィルタ機能のthisであり、コントローラではないため、CPはまったく機能しません。矢印関数を使用するか、thisを変数に保存する必要があります。

また、item.data.userは間違っているようですが、おそらくこれはitem.get('user')であるはずです。

ので、最終的なCPがある:私はエンバーに関する別の問題を持っている

filteredModel: Ember.computed('[email protected]', 'session.user.email', function(){ 
    return this.get('model') 
     .filter(item => item.get('user') == this.get('session.user.email')); 
}), 
+0

こんにちはルクスあなたがhttps://stackoverflow.com/questions/46276924/ember-js-をそれをチェックアウトすることができるだろう入れ子になったフォーム – jsg

+0

多分あなたは質問のような議論のためにエバースラックヘルプチャンネルをチェックアウトするべきでしょう。 – Lux

関連する問題