Javascript AngularJS过滤器无限摘要

Javascript AngularJS过滤器无限摘要,javascript,html,angularjs,angularjs-directive,angularjs-filter,Javascript,Html,Angularjs,Angularjs Directive,Angularjs Filter,我有一个过滤器: filter('keys', [function() { return function(obj) { if (angular.isObject(obj)) { return Object.keys(obj); } }; }]) 然后将此过滤器与对象一起使用以获取关键帧。我是这样使用它的: 我得到了一个无限的摘要错误。为什么?我猜每个循环都会创建一个全新的要过滤的对象。过滤器在视图中创建一个新对象,反过来触发摘要在新对象上使用过滤器,依此

我有一个过滤器:

filter('keys', [function() {
  return function(obj) {
    if (angular.isObject(obj)) {
      return Object.keys(obj);
    }
  };
}])
然后将此过滤器与对象一起使用以获取关键帧。我是这样使用它的:


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

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

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


更好的做法是在控制器中使用过滤器,这将防止在每个循环中使用过滤器。

很难理解这段代码的问题。这里的
指令是什么?
是AngularJS指令还是任何元素。你能在Plunkers中复制这个问题吗?Angular不是每次计算表达式时都会创建新的对象实例吗?你在这个表达式上有
$watch
吗?@pavelholl似乎没有那么明显。在视图中定义对象表达式不会产生您提到的任何效果。你可以自己试试。它也必须有其他的贡献。这里有一个例子