DOM 在从 Polymer 0.5 迁移到 1.0 后 属性 发生变化时不会更新
DOM doesn't update when property changes after migrating from Polymer 0.5 to 1.0
我正在使用 dom-repeat
来填充 table 的行,因此:
<tbody>
<template is="dom-repeat" items="{{list}}" as="row">
<tr>
<template is="dom-repeat" items="{{headers}}" as="header">
<td><template is="juicy-html" content$="{{getPropertyByName(row, header.name)}}"></template></td>
</template>
</tr>
</template>
</tbody>
其中 getPropertyByName()
函数仅取消引用该行:
getPropertyByName: function (listObj, name) {
return listObj[name];
}
在升级到 1.0 之前,该功能不是必需的,因为我们可以直接取消引用,即 content="{{row[header.name]}}"
。
我们有 table 的排序功能,通过单击 table header 触发,在升级到 1.0 之前,{{list}}
的数据绑定在table 行意味着在我们的 JS 函数中对 this.list
的元素进行排序导致 table 行在 DOM 中移动。由于 Polymer 1.0 不是那样工作的,我不确定我应该如何提醒 Polymer 属性 已更改,我尝试在排序后使用 this.set('this.list.0', this.list[0]);
,这是我从 [=20 得到的想法=],但这对我不起作用。在 JS 中对 data-bound 属性 进行排序后,如何让 Polymer 更改 DOM?
提前致谢!
要触发刷新,您可以在模板上调用 render()。
this.$.templateID.render();
dom-repeat
内置了排序支持,这里有文档 https://www.polymer-project.org/1.0/docs/devguide/templates.html#filtering-and-sorting-lists。
基本上,您可以将 sort
函数(与您为 Array.sort
提供的相同类型的函数)附加到模板。
此外,您可以在模板上调用 render()
以强制重新渲染。
我正在使用 dom-repeat
来填充 table 的行,因此:
<tbody>
<template is="dom-repeat" items="{{list}}" as="row">
<tr>
<template is="dom-repeat" items="{{headers}}" as="header">
<td><template is="juicy-html" content$="{{getPropertyByName(row, header.name)}}"></template></td>
</template>
</tr>
</template>
</tbody>
其中 getPropertyByName()
函数仅取消引用该行:
getPropertyByName: function (listObj, name) {
return listObj[name];
}
在升级到 1.0 之前,该功能不是必需的,因为我们可以直接取消引用,即 content="{{row[header.name]}}"
。
我们有 table 的排序功能,通过单击 table header 触发,在升级到 1.0 之前,{{list}}
的数据绑定在table 行意味着在我们的 JS 函数中对 this.list
的元素进行排序导致 table 行在 DOM 中移动。由于 Polymer 1.0 不是那样工作的,我不确定我应该如何提醒 Polymer 属性 已更改,我尝试在排序后使用 this.set('this.list.0', this.list[0]);
,这是我从 [=20 得到的想法=],但这对我不起作用。在 JS 中对 data-bound 属性 进行排序后,如何让 Polymer 更改 DOM?
提前致谢!
要触发刷新,您可以在模板上调用 render()。
this.$.templateID.render();
dom-repeat
内置了排序支持,这里有文档 https://www.polymer-project.org/1.0/docs/devguide/templates.html#filtering-and-sorting-lists。
基本上,您可以将 sort
函数(与您为 Array.sort
提供的相同类型的函数)附加到模板。
此外,您可以在模板上调用 render()
以强制重新渲染。