2016-05-19 3 views
1

注:この質問は古いバージョンのポリマーに関するものです。 Googleのエンジニアは、ポリマーパッケージの迅速な最新情報と、ドッグフードをしていない時点では、問題が時代遅れであるということを実感しています。'dom-repeat'でデータバインディングに失敗して 'paper-item'の中の 'paper-listbox'を更新しています

ready関数の変数journal_tagsへの最初のデータバインディングが機能し、私は3つのオプション 'meeting'、 'payment'と 'general_message'を表示します。問題は、 'new_tag'変数を変更して新しいオプションを導入しようとしたときに発生します。 'new_tag'は、異なるポリマー要素のデータバインディングによって変更されます。

「new_tag」に変更を監視オブザーバ関数「add_new_tag」が、これらはコンソールログです呼び出さ:

0meeting 
1payment 
2general_message 
3tada 

したがって「ジャーナル・タグ」が変更されました。しかし、問題は、「ジャーナルタグ」の変更により「ペーパーリスト」の追加が追加されることが予想されたにもかかわらず、「ペーパーリストボックス」の「ペーパーアイテム」オプションが同じ初期の「会議」、「支払い」、「general_message」のままであるということです。タダ 'オプション。

これはコードである:

<dom-module id="journal-entry"> 
    <template> 
    <paper-dropdown-menu label="Choose tag"> 
     <paper-listbox class="dropdown-content"> 
      <template is="dom-repeat" items="{{journal_tags}}"> 
       <paper-item> 
        {{item.tag}} 
       </paper-item> 
      </template> 
     </paper-listbox> 
    </paper-dropdown-menu> 
    <paper-textarea label="journal_entry_text_area"> 
    </paper-textarea> 
    </template> 
    <script> 
    (function() { 
    'use strict'; 

    Polymer({ 
     is: 'journal-entry', 
     properties:{ 
      new_tag:{ 
       type:String, 
       notify:true, 
       observer:'add_new_tag' 
      }, 
      journal_tags:{ 
       type:Object, 
       notify:true 
      } 
     }, 
     ready : function(){ 
      this.journal_tags=[ 
       {tag:'meeting'}, 
       {tag:'payment'}, 
       {tag:'general_message'} 
      ]; 
     }, 
     add_new_tag : function(){ 
      this.journal_tags.push({tag:this.new_tag}); 
      for(var i=0;i<this.journal_tags.length;i++){ 
       console.log(i + this.journal_tags[i].tag); 
      } 
      //this.journal_tags.sort(); 
     } 
    }); 
    })(); 
    </script> 
</dom-module> 

答えて

2

私はちょうど変更アレイがhttps://www.polymer-project.org/1.0/docs/devguide/properties#array-mutationごとに、関数へのデータバインディングを可能に送信される通知を有効に特殊なポリマー関数の方法によって行われるべきであることを見出しました。したがって、修正は簡単で、ライン変更することで構成されています

this.push('journal_tags',{tag:this.new_tag}); 

this.journal_tags.push({tag:this.new_tag}); 

関連する問題