問題描述
自定義 AngularJS 過濾器忽略我的參數並接收其他一些 scope.data (custom AngularJS filter ignores my parameter and receive some other scope.data)
我有一個很奇怪的問題。製作了一個自定義的AngularJS過濾器:
這是它的一部分:
angular.module('filterModule', []).
filter('nscode', function () {
return function (input) {
console.log('input:');
console.log(input);
(...)
然後我在這裡調用這個過濾器:
<ol ui‑tree‑nodes="" data‑nodrop‑enabled="false" ng‑model="node.i" collapsed="true" data‑nodrag ng‑class="{hidden: collapsed}">
<li ng‑repeat="node in node.i | nscode:{data: scope.data, code: nscodeinput}" ui‑tree‑node data‑nodrag
collapsed="true"
ng‑show="visible(node)"
ng‑include="'nodes_renderer.html'">
</li>
</ol>
你會認為我的nscode過濾器會收到 {data: scope.data, code: nscodeinput},但我得到的是:
input:
filterModule.js:8 [Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object]
這是節點的內容,來自 ng‑model。我真的不明白為什麼會發生這種情況?
我只是將對像傳遞給我的過濾器,但無論我設置什麼參數,它都會繼續獲取節點元素。
參考解法
方法 1:
Solved it:
return function (array, input) {
For some reason it sends the array of the ng‑model even if I don't ask for it. So my filter needs to take two parameters. the second one receives the arguments I send to my filter.