2016-05-19 3 views
1

Примечание: этот вопрос касается старой версии полимера. Инженеры Google стремятся сделать быстрые обновления обновлений для полимерной упаковки в сочетании с тем фактом, что в то время, когда они не подвергались собакам, это означает, что проблема устарела.Обновление «бумажного элемента» внутри «paper-listbox» путем «dom-repeat» и сбой передачи данных

Исходные данные, связывающие переменную journal_tags с готовой функцией, работают, и я получаю три варианта: «Встреча», «Платеж» и «Общий_массе». Проблема возникает, когда я пытаюсь ввести новую опцию, изменив переменную new_tag. «new_tag» изменяется привязкой данных в другом полимерном элементе.

Когда функция наблюдателя add_new_tag ', который отслеживает изменения в «» new_tag вызывается эти консольные журналы:

0meeting 
1payment 
2general_message 
3tada 

Поэтому «журнал-метка» изменяется. Но проблема в том, что опции «paper-item» в «paper-listbox» остаются прежними «встречами», «платежами», «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.journal_tags.push({tag:this.new_tag}); 

к

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

 Смежные вопросы

  • Нет связанных вопросов^_^