动态搜索/过滤器核心列表(Polymer 0.5)

时间:2015-04-13 00:08:47

标签: polymer

我需要实现一种过滤类型搜索,如果它们与搜索不匹配,则会将项目隐藏在核心列表中。我创建了一个.hidden类,如果表达式返回false,则应用于项目:

class = {{ {hidden: !match(model.host, hQuery)} | tokenList }}

隐藏元素,但除非单击可见行,否则列表不会重排元素。有没有办法使用函数调用强制重排?

Blank With Filter After Click

2 个答案:

答案 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