禁用ng-repeat内部的常规过滤器

时间:2017-05-29 23:18:30

标签: javascript angularjs angularjs-ng-repeat angular-filters

我有3个过滤器,它们同时影响数组和嵌套数组,都使用ng-repeat显示。

它显示如下:

BeautifulSoup

过滤器效果很好。 当我尝试在第一个数组中添加一个按钮来禁用过滤器时出现问题。到目前为止它只会禁用ng-repeat的特定项目中的过滤器,而希望效果是它会禁用所有项目的过滤器

这就是它的样子:

$.validator.addMethod("notEqual", function(value, element, param) {
 return this.optional(element) || value == 'HAMBURGER' || value == 'WATER';
}, "This has to be different...");

我怎样设法让这个按钮杀死ng-repeat中所有项目的过滤器,而不仅仅是那个?

1 个答案:

答案 0 :(得分:0)

ng-repeat创建子范围。因此,由于您在子范围级别重新分配范围属性,因此不会修改原始范围。

使用函数,以便在控制器的顶层重新分配属性。随后的摘要周期将更新子范围

<a ng-click="reset()">Show all</a>

控制器:

$scope.reset = function(){
  ['one','two','three'].forEach(function(prop){
      $scope[prop] = {};
  })
}

如果您使用的是controllerAs,则此问题将不存在...或者如果您为所有过滤器使用了一个对象,并且您在视图中更新了该对象的属性