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