如何动态地将对象/数组的子项绑定到元素

时间:2016-08-19 11:15:11

标签: polymer polymer-1.0 web-component

比方说,我们有一个元素,只有一个简单的双向绑定到子属性:

<x-element data="{{model.partOfData1}}"></x-element>

是否可以动态更改零件partOfData1?我喜欢做的是这样的事情:

<x-element data="{{model[whichPartOfData]}}"></x-element>

虽然whichPartOfData是指向model中数组的指针。我有这么多用例,但很难找到解决方案。存档的最佳方式是什么?

1 个答案:

答案 0 :(得分:0)

您可以创建一个计算绑定,它将模型和属性键作为单独的参数:

<x-element data="[[getData(model, propertyName)]]"
           on-data-changed="updateModel"></x-element>

Polymer({
  is: 'x-element',
  getData: function(model, key) {
    return model[key];
  },
  updateModel: function(ev) {
    this.model[this.propertyName] = ev.detail.value;
  }
});

如果是常见情况,您可以将getData功能提取到behaviour

要实现双向绑定,您必须手动侦听data属性的更改。毕竟数据绑定主要是事件和监听器。我意识到,在这一点上解决方案有点麻烦。