gpt4 book ai didi

javascript - 结合变化的 Polymer 1.0 Array Observers

转载 作者:数据小太阳 更新时间:2023-10-29 06:01:16 24 4
gpt4 key购买 nike

我正在尝试观察传递给 Polymer 元素的对象数组的变化。当一个新项目被添加到数组中时,该数组也会在 Polymer 元素中发生变化。但是,永远不会调用观察者方法。

包含元素

<dom-module is="table-container">
<template>
<selectable-table table-items="{{items}}"></selectable-table>
<button on-click="addItem">Add Item</button>
</template>
<script>
Polymer({
is : "table-container",
attached : function() {
this.items = [];
for (var i = 0; i < 3; i++) {
this.push("items", {
numerical: "1",
english: "one"
});
}
},
addItem : function() {
this.push("items", {
numerical: "3",
english: "three"
})
}
})
</script>
</dom-module>

尝试观察这里的变化:

<dom-module id="selectable-table>
<template>
<div>{{tableItems}}</div>
</template>
<script>
Polymer({
is : "selectable-table",
properties : {
tableItems: {
type: Object,
notify: true,
observer: "updateTableItems"
}
}
updateTableItems : function() {
// Updates here
}
});
</script>
</dom-module>

“updateTableItems”方法首先在项目数组首次填充时被调用,但在单击按钮添加更多对象时从未被调用。

最佳答案

要观察数组的变化,请使用以下观察者样式。

Polymer({
is : "selectable-table",
properties : {
tableItems: {
type: Array,
notify: true,
}
},

observers: [
'updateTableItems(tableItems.*)'
],
updateTableItems : function() {
// Updates here
}
});

因为 tableItems 是一个对象数组,所以您应该在属性声明中使用 Array 类型。如果您将新的数组实例分配给 tableItems 属性,您使用的观察者类型只会触发。对于数组的操作,将回调添加到 observers。您可以在 docs 中找到更多详细信息.

关于javascript - 结合变化的 Polymer 1.0 Array Observers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32747109/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com