0

我有一个过滤器:AngularJS过滤无限消化

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

此过滤器,然后用一个对象来拿到钥匙。我使用的是这样的:

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

我也得到一个无限消化错误。为什么?

+0

这段代码很难理解这个问题。这里的'指令'是什么? – PSL

+0

AngularJS指令或任何元素。 –

+0

您是否可以在运行中复制问题 – PSL

回答

0

我的猜测是,每个循环创建一个全新的对象进行过滤。您的过滤器会在视图中创建一个新对象,该对象将返回触发摘要以在新对象上使用过滤器等等。

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

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