如何从过滤器函数中访问$ scope中的变量?

时间:2014-05-27 19:10:53

标签: angularjs

我需要根据控制器中的设置更改过滤器的工作方式。我可以从我的过滤器访问控制器变量吗?我是否将var添加到模板中的过滤器参数列表中?

提前致谢。

2 个答案:

答案 0 :(得分:1)

如果要在视图中调用过滤器,可以在过滤器参数列表中添加var 附加到视图中的过滤器参数列表的任何变量都将附加到过滤器函数参数(在过滤后的对象之后) E.g:

过滤器:

.filter('doSomeFiltering', function () {
    return function (someObj, myVar1, myVar2) {
        ...
    };
});

观点:

{{thisWillBeSomeObj | doSomeFiltering:thisWillBeMyVar1:thisWillBeMyVar2}}

控制器:

$scope.thisWillBeSomeObj = ...;
$scope.thisWillBeMyVar1 = ...;
$scope.thisWillBeMyVar2 = ...;

另请参阅此 short demo

答案 1 :(得分:1)

你应该将你需要的任何东西从你的控制器传递到过滤器功能。 e.g:

JS

app.filter('myFilter', function () {
    return function(input, myParam) {
        if (myParam) {
            return input;
        } else {
          return [];
        }
    };
}

HTML

<div>{{myCtrl.someList | myFilter:myCtrl.someSetting}}</div>