聚合物重复模板“刷新”

时间:2014-07-17 18:35:41

标签: templates polymer

需要有关概念的帮助。构建一个显示数据库数据的自定义元素。使用重复模板,它工作得很好。报告已分组,因此报表中的每一行都包含一次钻取到一行后显示的另一级数据。所以现在我希望能够刷新"报告数据以反映排序或分组更改。该报告基于"索引"指向显示的实际数据的数组。我对索引数组中的数据进行排序/分组,并将此数组用作模板重复的数组。

<div id="rptbody">
  <template repeat="{{group in groups}}">
    <pmg-group groupid={{group.id}} groupval={{group.groupval}} groupobj={{group.groupobj}}></pmg-group>
  </template>
</div>

因此,在此示例中,groups数组是我的数据的键列表。在此示例中,groups数组已正确排序,以便[0]包含数据数组的第一个索引,[length-1]包含最后一个索引。我有一个排序例程,可以更改组中的索引值,但它不会添加或删除groups数组中的项目。

所以我的问题是在我的度假之后,如何触发模板重新扫描群组列表?我发现我可以设置groups = [],然后从我的主索引重新加载组(groups.push({idx}),它将更新模板,但这对我来说似乎有点浪费。

有没有办法触发模板刷新,或者重新扫描groups数组并根据值的变化重新组织DOM?

2 个答案:

答案 0 :(得分:2)

In the past我已经让template repeat像这样刷新:

var template = document.querySelector('template'); // Use specific selector here
template.iterator_.updateIteratedValue(); // Force Polymer to refresh template

这是一个黑客,但它看起来仍然有效。 Here's a jsbin

答案 1 :(得分:1)

偶然发现了这一点,发现我们必须使用Polymer元素数据模型的conn.getErrorStream()方法。没有直接找到任何关于此的文档,但这似乎很有意思https://www.polymer-project.org/1.0/docs/devguide/data-binding.html#set-path。会避免那些hacky事情,因为他们可以随时改变API。