2016-10-30 5 views
0

この問題を解決する方法がわかりません。私は誰かがこれを非常に迅速に知っていると確信しています配列内のオブジェクトのプロパティをポリマーで変更する

私はオブジェクトの配列を持ち、プロパティを変更しています。私はfirebaseリスナー 'child_changed'を持っています。 firebaseが更新されると、配列を更新する必要があります。以下にコードを示します。配列が、私は、テンプレートリピート-DOMはトリガする修正され

 dbRefList.on('child_changed', function(snap) { 
 
      
 
      var len = this.grocerylist.length; 
 
      for(var i=len; i--;) { 
 
    
 
      if(this.grocerylist[i].key === snap.key) { 
 
       this.set(['grocerylist', i, 'selected'], snap.val().selected); 
 
      } 
 
      } 
 
     
 
      this.notifyPath('grocerylist', this.grocerylist.slice()); 
 

 
     }.bind(this));

。私はthis.setを配列の突然変異のサブプロパティをトリガーしませんが、再び私はこれを解決する方法がわかりません知っている。私は研究を行い、非常に多くのソリューションを試しました。

私はテンプレートdom-repeatでレンダリングを強制することができますが、私はデータバインディングの方法を好むでしょう。

答えて

1

ので、このコード(あなたが今そこに持っているだけでthis.set)は、(それが実際に現れていますので、それはそこにバインドされていますと仮定)grocerylist.i.selectedの値がdom-repeat内で更新するようになります。

あなたはどのような行動をしていますか? selected値に基づいてリストをフィルタリングまたはソートしようとしていますか?その場合は、dom-repeatobserve="selected"を追加する必要があります。

(あなたはchild-changedコールバックは、あなたが期待する要素-ではなく、windowまたは何か他のものをthis値で呼び出されていることを確認した。また、持っている?)

あなたはthis.grocerylist = this.grocerylist.slice()を行うことでリフレッシュを強制することができるはずですまたはthis.set('grocerylist', this.grocerylist.slice()); ... notifyPathは値を変更しないため、ここでは機能しません。以前の変更について要素に通知します(2番目の引数は実質的に無視されます)。

+0

this.grocerylistを私が設定した新しい選択値で更新します。おそらくobserve = "selected"を試すことができます。私はthisを試しました..grocerylist = this.grocerylist.slice()は動作しません。 observe = "selected" tipありがとうございました –

+0

observe = "selected"を追加しようとしましたが動作しません。 –

+0

新しい値が表示されている場合、何が問題なのですか?あなたの 'dom-repeat'やフィルターやソートのようなコードをもっと見ると便利です。 – DocDude

関連する問題