我需要实现一种过滤类型搜索,如果它们与搜索不匹配,则会将项目隐藏在核心列表中。我创建了一个.hidden类,如果表达式返回false,则应用于项目:
class = {{ {hidden: !match(model.host, hQuery)} | tokenList }}
隐藏元素,但除非单击可见行,否则列表不会重排元素。有没有办法使用函数调用强制重排?
答案 0 :(得分:1)
经过一周的挣扎,隐藏列表项目并不是解决这个问题的正确方法。遍历原始数组,将任何匹配的对象推送到临时数组,然后将核心列表的.data
数组替换为临时数组:this.$.list_id.data = tmpArray
。对于最多10K记录的列表,性能很好。
答案 1 :(得分:0)
这就是我在我的代码中所做的,它起作用了:
<div style="{{hide_part1}}">
...content to show/hide...
</div>
....
根据路线变化切换它(flatron-director):
routeChanged: function(oldValue, newValue) {
if ('some_route_1' == this.route) {
this.hide_part1 = ''
this.hide_part2 = 'display: none;'
} else if ('some_route_2' == this.route) {
this.hide_part1 = 'display: none;'
this.hide_part2 = ''
}
},
同样使用core-list的updateSize(),特别是scrollToItem( 0 ),即返回顶部,这里和那里都有帮助,因为我也遇到了'reflow'的问题: https://stackoverflow.com/questions/29432700/polymer-core-list-is-not-rendering-some-of-the-elements