2015-06-09 2 views
2

Я пытаюсь создать двустороннюю привязку данных между входами в dom-повторителе и шаблоне, но изменения, похоже, не распространяются обратно. Что я делаю не так?Двусторонняя привязка данных в dom-repeatater

<dom-module id="record-card"> 
    <template id="node"> 
     <template is="dom-repeat" items="{{labels}}"> 
      <h1> 
       <input is="iron-input" bind-value="{{item}}" on-change="labelsChanged"> 
      </h1> 
     </template> 
     <input is="iron-input" bind-value="{{labels.0}}"> 
     Labels: <span>{{labels}}</span> 
    </template> 
</dom-module> 

<script> 
Polymer({ 
    is: "record-card", 
    properties: { 
     labels: { 
      type: Array, 
      notify: true, 
      value: function() { 
       return ["Pizza", "Person"] 
      } 
     } 
    } 
}); 

</script> 

Вход в йот ретранслятора не распространяется, вход вне его, используя путь распространяется в ретранслятором, но не наоборот, но не обновляет {{}}.

ответ

2

Я задал аналогичный вопрос (How to two-way bind iron-input to dom-repeat's item?), и ответ, который я получил, должен был использовать value="{{item::input}}. Однако похоже, что привязка к необработанному массиву строк работает не очень хорошо. Я попытался изменить его на массив объектов с одним строковым свойством и сделал это.

http://plnkr.co/edit/X6b3FqZIY29tiGYoHnzq

+0

Спасибо, Да, я пытался комментировать ваш, но я до сих пор не разрешены. Я проверю, работает ли это ... – Boris

+0

Да, я пробовал, он работает только в том случае, если это объекты, поэтому здесь идет сериализация. Спасибо хоть. Проблема на GitHub: https://github.com/Polymer/polymer/issues/1821#issuecomment-110804603 – Boris

0

Вот как я имею дело с данными, измененными вложенной йот-повторить

http://plnkr.co/edit/Y0P5vNxg46t5fX7gJFxU?p=preview

// Add Task to the selected Employee 
_addTask: function() { 
var i=this._getSelectedEmployeeIndex() 
if (i>=0) { 
    var employee = this.employees[i] 
    // use both for child dom-repeat 
    this.push('employees.'+i+'.tasks', {name: this._random(this.__tasks)}) 
    this.notifyPath('employees.'+i+'.tasks.*') 
} 
}, 
Смежные вопросы