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