我有一个非常奇怪的问题。制作了一个自定义的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。我真的不明白为什么会这样?
我只是将一个对象传递给我的过滤器,但不管我设置什么参数,它都会继续获取节点元素。
答案 0 :(得分:1)
解决了它:
return function (array, input) {
出于某种原因,即使我没有要求它,它也会发送ng-model数组。所以我的过滤器需要采用两个参数。第二个接收我发送给我的过滤器的参数。