嵌套dom-repeat&的挑战对象/数组组合

时间:2015-06-26 18:07:37

标签: polymer

我在操作对象/数组组合方面遇到了一些麻烦。获取更改以反映嵌套的dom-repeat。它工作但感觉就像一个hacky方法 - 任何人都可以告诉我,如果有更好的方法吗?

http://jsbin.com/dijogo/edit?html,output(仅限Chrome)

请参阅itemTap函数了解特定的hackiness区域。或者也许有更好的方法来解决它?

1 个答案:

答案 0 :(得分:2)

这样做

  itemTap: function(e) {
    e.model.set('i.container.value', e.model.i.container.value + ' tapped');
  },

而不是

  itemTap: function(e) {
    //This is an overly complicated way to update a "container.value" in the items object arrays no?!

    e.model.set('i.container.value', e.model.i.container.value + ' tapped');

    var array = this.items[e.model.cat];
    array[e.model.index].container.value += ' tapped';

    this.set(['items', e.model.cat], []);
    this.async(function(){this.set(['items', e.model.cat], array);});
  },

Fwiw,你也可以这样做

    this.items = {
      'One':  [{container:{value: '1a'}}, {container:{value: '1b'}}],
      'Two':  [{container:{value: '2a'}}, {container:{value: '2b'}}],
      'Three':[{container:{value: '3a'}}, {container:{value: '3b'}}]
     });

而不是

    this.set(['items', 'One'], [{container:{value:'1a'}}, {container:{value:'1b'}}]);
    this.set(['items', 'Two'], [{container:{value:'2a'}}, {container:{value:'2b'}}]);
    this.set(['items', 'Three'], [{container:{value:'3a'}}, {container:{value:'3b'}}]);

相同
   this.categories = ['One', 'Two', 'Three'];