加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 如何动态禁用ng-repeat内的过滤器

发布时间:2020-12-17 17:19:00 所属栏目:安全 来源:网络整理
导读:可以使用复选框删除过滤器吗? 如果选中复选框,则将禁用ng-repeat内的过滤器.例如,如果选中了countryfilter和winetypefilter复选框,则会禁用相关过滤器. 原始代码(已启用过滤器) li ng-repeat="wine in wines | winetypefilter:winetypes| countryfilter:cou
可以使用复选框删除过滤器吗?

如果选中复选框,则将禁用ng-repeat内的过滤器.例如,如果选中了countryfilter和winetypefilter复选框,则会禁用相关过滤器.

原始代码(已启用过滤器)

<li ng-repeat="wine in wines | winetypefilter:winetypes| countryfilter:countrytypes | stylefilter:styletypes">
                {{wine.name}} is a {{wine.type}} with {{wine.style}} style from {{wine.country}}
</li>

(使用复选框,countryfilter和winetypefilter禁用过滤器)
会导致:

<li ng-repeat="wine in wines | stylefilter:styletypes">
            {{wine.name}} is a {{wine.type}} with {{wine.style}} style from {{wine.country}}
</li>

解决方法

当然你可以动态启用禁用你的过滤器…有很多方法可以做到这一点我想到的最简单的解决方案就是发送第三个参数作为布尔值来检查过滤器是否启用…

这里是过滤器样本……

app.filter('winetypefilter',function () {
  return function(input,filter,isEnable) {
    // if isEnable then filter out wines
    if (isEnable) {
      var result = [];
      angular.forEach(input,function (wine) {
          angular.forEach(filter,function (isfiltered,type) {
              if (isfiltered && type === wine.type) {
                  result.push(wine);
              }
          });
      });
      return result;
    } 
    // otherwise just do not any filter just send input without changes
    else{
      return input
    }
  };
});

这是PLUNKER ……

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读