2015-04-13 49 views
0

我需要实现过滤器类型的搜索,如果它们与搜索不匹配,则将核心列表中的项目隐藏起来。我创建了一个表达式返回false被应用到的项目的.hidden类:动态搜索/过滤器核心列表(聚合物0.5)

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

的元素是隐藏的,但除非我点击一个可见行列表中没有回流的元素。有没有办法强制使用函数调用回流?

Blank With Filter After Click

回答

1

挣扎的一周后,隐藏列表项是不处理的正确方法。遍历原始数组,将所有匹配的对象推送到临时数组,然后用临时数组替换核心列表的.data数组。性能适用于列出多达10K条记录。

0

这是我在我的代码正在做的,和它的作品:

<div style="{{hide_part1}}"> 
...content to show/hide... 
</div> 
.... 

开关它基于路由改变(FLATRON主任):

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 = '' 
     } 
    }, 

还使用核心列表的updateSize(),尤其是scrollToItem(),即返回顶部,这里有帮助的,我也有与“回流”问题: https://stackoverflow.com/questions/29432700/polymer-core-list-is-not-rendering-some-of-the-elements

+0

我试着在key-up上调用updateSize(),但它似乎仍然不同步。 – Indolering

+0

每当第一个匹配项目位于当前缓冲区之外时,我遇到了麻烦。 'updateSize'和'scrollTo(0)'(滚动到顶部)没有帮助,我必须触发滚动到那个特定的索引项目。我创建了(https://github.com/Polymer/core-list/issues/87)[a Github门票],但现在我能做的最好的检测是当列表可能在跑道上有更多,然后强制滚动到每个搜索条目的特定项目。 – Indolering