如何将阵列绑定到Polymer 2中的组件模板?

如何将阵列绑定到Polymer 2中的组件模板?,polymer,polymer-2.x,Polymer,Polymer 2.x,我试图直接将数组绑定到聚合物2组分模板。它一开始可以工作,但随后就无法检测到更改。我使用这个。推方法是为了让聚合物检测到变化,但它不起作用。绑定到dom重复模板没关系 在这里您可以找到一个Plunker: 有可能做我正在尝试的事情吗?我做错了什么 感谢您的帮助不,不可能绑定到这样的数组 [[jsondata]]如果数据是数组,它将无法工作 观察员也是这样: static get observers(){ return [ '_dataChanged(data)'

我试图直接将数组绑定到聚合物2组分模板。它一开始可以工作,但随后就无法检测到更改。我使用这个。推方法是为了让聚合物检测到变化,但它不起作用。绑定到dom重复模板没关系

在这里您可以找到一个Plunker:

有可能做我正在尝试的事情吗?我做错了什么


感谢您的帮助

不,不可能绑定到这样的数组

[[jsondata]]如果数据是数组,它将无法工作

观察员也是这样:

static get observers(){
    return [
        '_dataChanged(data)'
    ]
}
这行不通

在直接绑定上,它工作的唯一方法是使用另一个数组值更改完整的数组值

class ParentElement extends Polymer.Element {
  static get is() { return "parent-element"; }
  static get properties(){
    return {
      data: {
        type: Array,
        notify: true,
        value: function(){
          return [{name: 'first'}]
        }
      }
    }
  }

  constructor() {
    super();
  }

  json(data){
    return JSON.stringify(data);
  }

  addChild(){
    this.data = [{name: 'first'},{name: 'second'}];
  }
}
customElements.define(ParentElement.is, ParentElement);
在上面的这个例子中,您可以看到数据数组被完全替换了,它将工作,因为它是数据对象发生了更改。 在您的情况下,如果更改数组的内容,那么绑定将无法工作。 如果您想查看某些内容,可以在plunker中使用以下命令更改HTML部分:

[[jsondata.*]]

然后您将看到更改的聚合物绑定对象。 但是,最好不要像您那样绑定数组,而是使用观察者并在函数中执行我们的操作:

static get observers(){
    return [
        '_dataChanged(data.splices)'
    ]
}

_dataChanged(value){
    //work to do here
}

有关更多详细信息,请查看聚合物文档

谢谢!因此,如果我创建一个新数组,它将检测到由于引用更改而发生的更改。我使用了一个示例:addChild{this.data=this.data.concat{name:'test'}