【发布时间】:2016-06-10 23:43:46
【问题描述】:
我有一个视图模型。
该模型是对象数组:
var arr = { "12345qwery": { prop1: "value", prop2: "value" } } // contains 500 items
今天我用以下方式过滤它:
arr = $filter('filter')(arr, filterTerm); // contains 4 items
在这一行之后,我得到了很好的过滤数据,但如果我再次运行这个过滤器,我没有 500 个项目,而是 4 个。
因此,为了避免这种情况,我将原始数组存储在临时对象中,当用户更改过滤器时,我首先使用备份数据(它是原始 500 项)更新 arr 并进行过滤。
现在我遇到了麻烦,因为我有多个过滤器,我必须在每个过滤器之前恢复原始数据......无论如何它是一团糟:)
有没有更好的(角度)方法可以在 javascript 过滤中做到这一点?
更新
为了更好地解释我创建 plunker 的问题是什么:
https://plnkr.co/edit/99b02UtUfPeM3wl4IiX6?p=preview
如您所见,我使用对象加载标记并希望通过文本字段对其进行过滤。
但我不能,因为我总是遇到一些错误。
我在这里做错了吗?
为了避免这种情况并以某种方式实现过滤器,这就是为什么我决定在代码中执行它并在每个过滤器之后保留原始数组,但这是非常复杂的解决方案,我不想以更自然的角度方式来实现它。
赏金更新
我在js 代码中过滤对象,因为我找不到以标准角度方式过滤此指令上的标记的方法。
这就是为什么我在代码中进行过滤,在过滤之前总是复制它。
我需要帮助以标准角度方式过滤此指令上的标记对象。
Plunker 实现了这个指令,但我不知道如何过滤它。
【问题讨论】:
-
问题不清楚,能否请您添加 jsfiddler 举例说明问题?
-
你有什么理由从 JS 而不是 HTML 模板中过滤数组?
-
我正在使用这个指令。而且它不能以标准的角度方式过滤,我不知道为什么:github.com/tombatossals/angular-leaflet-directive/issues/395
-
您的 plunk 如何尝试使用过滤?我找不到 $filter 或 {{ |过滤 }} 语法。
-
您不能在对象上使用过滤管道,它必须在数组上使用。在您的 Plunker 中,
arr是一个对象。使用过滤器的任何变体都会导致类似this 的错误。
标签: javascript angularjs angularjs-scope angularjs-filter angular-leaflet-directive