AngularJS过滤无限摘要

时间:2015-01-03 20:20:07

标签: javascript html angularjs angularjs-directive angularjs-filter

我有一个过滤器:

filter('keys', [function() {
  return function(obj) {
    if (angular.isObject(obj)) {
      return Object.keys(obj);
    }
  };
}])

然后,此过滤器与对象一起使用以获取密钥。我这样使用它:

<directive data="{test: 1, test1: 2, test2: 3} | keys"></directive>

我得到了无限的摘要错误。为什么呢?

1 个答案:

答案 0 :(得分:0)

我的猜测是每个循环都会创建一个要过滤的全新对象。您的过滤器在视图中创建一个新对象,该对象反过来触发摘要以在新对象上使用过滤器,依此类推。

您应该在控制器中定义对象,以防止在视图中,在每个循环中创建新对象。

更好的方法是在控制器中使用过滤器,这样可以防止在每个循环中使用过滤器。