如何使filterFilter返回索引数组而不是项?

时间:2013-04-24 06:21:58

标签: javascript angularjs angularjs-service

我想使用filterFilter功能,但我想重用数据数组,而不是每次运行时都创建一个新数组。所以返回一个索引数组然后我可以在我的服务中返回与索引关联的项。这样我就可以在我的服务上创建一个$ watch导出,这样我就可以看到真实的项目而不是过滤器。

我考虑过复制angular filterFilter源码,但从长远来看这是不可维护的,我该怎么办?

上下文:

我正在编写一个表单向导服务,它将一个模式应用于这些步骤(每个步骤都有许多略有不同的对象结构),它包含一个对象数组。 filterFilter返回一个新的对象数组,所以当我使用“setter”修改服务中的对象时,它不是更新对象本身,而是更新(?)创建的对象,这对我没有用

1 个答案:

答案 0 :(得分:0)

Javascript有Object.keys(arrayName)来做这件事,但你必须为IE8或更低版本包含一个poly-fill。

var a = ['foo', 'bar'];
Object.keys( a ); //returns ['0','1'];

MDN Object.keys article 有一篇供实施的文章,如果你想在旧浏览器中使用它。

但是,在查看您的问题时,我认为您误读了filter过滤器。使用此过滤器时,它可能返回与输入不同的数组,但该过滤器中的每个对象仍然是对原始对象的引用。所以编辑任何对象都应该没有问题地修改原文。

希望这有帮助。