自定义AngularJS过滤器忽略我的参数并接收一些其他scope.data

时间:2015-11-20 12:54:39

标签: javascript angularjs filter module angularjs-scope

我有一个非常奇怪的问题。制作了一个自定义的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 个答案:

答案 0 :(得分:1)

解决了它:

    return function (array, input) {

出于某种原因,即使我没有要求它,它也会发送ng-model数组。所以我的过滤器需要采用两个参数。第二个接收我发送给我的过滤器的参数。