Polymer2:更新数组元素的视图,通过 dom 重复生成
Polymer2: Update view of array element, generated via dom repeat
我有一组对象,它们通过 dom-repeat 创建它们的视图。在这个视图中,我有一个按钮,它增加了数组元素的 属性 。
但是此后视图不会刷新。
他们是通知 polymer2 更新的方法吗:
这是一段代码:
<template id="filterElementList" is="dom-repeat" items="{{filterElements}}">
<div style="display: flex;">
<filter-panel-element style$="margin-left: {{_computeLevel(item.level)}}px;"></filter-panel-element>
<i class="fa fa-arrow-circle-left" aria-hidden="true" on-click="_decreaseLevel"></i>
<i class="fa fa-arrow-circle-right" aria-hidden="true" on-click="_increaseLevel"></i>
</div>
</template>
JS:
_increaseLevel: function (e) {
e.model.item.level++;
},
我更新了元素的级别属性,但是视图没有更新。
因此,考虑到您的模板已绑定到 filterElements
,并且您正在尝试在 array
、[=15= 中增加 item
的子 属性 ]
您可能必须在更新元素的 属性 and/or 数组的子 属性 时指定 data.path
。
所以试试这个:
e.model.set('item.level',e.model.item.level+1)
Polymer 在其数据系统文档中记录了这一点,它有助于 Polymer 传播事件通知并观察数据变化。
如果你能用你的数组和元素创建一个 plunk,那么进一步排除故障会更容易。
以防万一,对您的代码进行上述更改,没有达到预期的结果
我有一组对象,它们通过 dom-repeat 创建它们的视图。在这个视图中,我有一个按钮,它增加了数组元素的 属性 。 但是此后视图不会刷新。 他们是通知 polymer2 更新的方法吗:
这是一段代码:
<template id="filterElementList" is="dom-repeat" items="{{filterElements}}">
<div style="display: flex;">
<filter-panel-element style$="margin-left: {{_computeLevel(item.level)}}px;"></filter-panel-element>
<i class="fa fa-arrow-circle-left" aria-hidden="true" on-click="_decreaseLevel"></i>
<i class="fa fa-arrow-circle-right" aria-hidden="true" on-click="_increaseLevel"></i>
</div>
</template>
JS:
_increaseLevel: function (e) {
e.model.item.level++;
},
我更新了元素的级别属性,但是视图没有更新。
因此,考虑到您的模板已绑定到 filterElements
,并且您正在尝试在 array
、[=15= 中增加 item
的子 属性 ]
您可能必须在更新元素的 属性 and/or 数组的子 属性 时指定 data.path
。
所以试试这个:
e.model.set('item.level',e.model.item.level+1)
Polymer 在其数据系统文档中记录了这一点,它有助于 Polymer 传播事件通知并观察数据变化。
如果你能用你的数组和元素创建一个 plunk,那么进一步排除故障会更容易。
以防万一,对您的代码进行上述更改,没有达到预期的结果