在AngularJS过滤器中使用以下语法在视图模板中使用:
{{ expression | filter }}
表达式可以是控制器中定义的模型:
$scope.expression = 45
如何在变量中传递内置过滤器?这个表达不起作用:
$scope.filter = 'currency'
修改:我现在正在使用答案中稍加修改的功能。
控制器:
$scope.expression = 45;
$scope.filter = 'currency';
$scope.filterFn = function (value, filterName, filterArgs) {
if (filterName)
return $filter(filterName)(value, filterArgs);
return value;
}
查看:
{{filterFn(expression, filter, args)}}
答案 0 :(得分:2)
另一种解决方案,如果你想要动态过滤器名称,那就是创建一个过滤器,它将成为其他人的包装器:
app.filter('filterWrapper', function ($filter) {
return function () {
var input = arguments[0],
name = arguments[1],
args = [].slice.call(arguments, 2); //dirty hack, arguments are not Array
return $filter(name)(input, args);
}
})
在视图中使用:{{greeting | filterWrapper:filterName }}
。
结帐小提琴完整示例http://jsfiddle.net/Y9g4q/11/。
答案 1 :(得分:1)
不是在视图中应用过滤器,而是可以直接在控制器中应用它,如下所示:
function YourController ($scope, $filter) {
$scope.yourFilteredVar = $filter('currency')(45);
}
另外,您可以将过滤器函数保存为$ scope的属性并在视图中使用它:
function YourController ($scope, $filter) {
$scope.filterFn = $filter('currency')
$scope.yourVar =45;
}
观点:
<span>My Var: {{filterFn(yourVar)}}</span>