我有一个非常奇怪的问题。制作了自定义 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]
这是node的内容,来自ng-model。我实在不明白为什么会出现这种情况?
我只是将对象传递给我的过滤器,但无论我设置什么参数,它都会不断获取节点元素。
最佳答案
解决了:
return function (array, input) {
出于某种原因,即使我不要求它,它也会发送 ng-model 的数组。所以我的过滤器需要采用两个参数。第二个接收我发送到过滤器的参数。
关于javascript - 自定义 AngularJS 过滤器忽略我的参数并接收其他一些scope.data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33827257/