首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带过滤器的聚合物中频模板:过滤器不更新

问带过滤器的聚合物中频模板:过滤器不更新
EN

Stack Overflow用户
提问于 2014-05-14 15:42:41
回答 1查看 1.1K关注 0票数 1

我使用一个if-模板来显示或隐藏列表中的项目,在一个聚合物元素中。我的模板基于一个值列表,并使用引用列表进行筛选。

更新值列表将产生所需的效果。但是,更改筛选器引用列表(此处删除一个元素)不会产生模板的更新。

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
<script src="//cdnjs.cloudflare.com/ajax/libs/polymer/0.2.3/platform.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/polymer/0.2.3/polymer.js"></script>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
  <test-component></test-component>
</body>
</html>

<polymer-element name='test-component' attributes='itemlist filterlist'>
  <template>
    <style>
    </style>
    <table id='table'>
      <tr template repeat="{{item in itemlist}}">
        <template if="{{item | applyFilter(filterlist)}}">
          <td>test</td>
        </template>
      </tr>
    </table>
    <input type='button' value='remove 1 element' on-click={{clicked}}></input>
    <div id='msg'></div>  
  </template>
  <script>
    Polymer('test-component', {
      itemlist: [1,2,3],
      filterlist: [1,2],
      applyFilter: function(item, filterlist) {
        var test = false;
        if (filterlist) {
          filterlist.forEach(function(filteritem) {
            test = test || ((new RegExp(filteritem)).test(item));
          });
        }
        return test;
      },
  clicked: function() {
    this.$.msg.innerHTML = 'Filter list was ' + this.filterlist;
    this.filterlist.splice(1,1);
    this.$.msg.innerHTML += ', now it\'s ' + this.filterlist;
  }
});

有关可运行代码,请参见http://jsbin.com/vuvikare/4/edit?html,output。

是否有一种方法来触发此更新(例如使用filterChanged观察者)?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-15 19:13:47

这在很大程度上是一种黑客行为,但我通过添加以下方法来让它起作用:

代码语言:javascript
复制
filterlistChanged: function() {
  Array.prototype.forEach.call(this.$.table.querySelectorAll('template[if]'), function(t) {
    t.iterator_.updateIteratedValue();
  });
},

基本上,它查找表中的所有内部模板元素,并强制它们更新(使用私有方法)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23659300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档