AngularJS-将过滤器从控制器传递到视图模板
在AngularJS中,使用以下语法在视图模板中使用过滤器:AngularJS-将过滤器从控制器传递到视图模板,angularjs,Angularjs,在AngularJS中,使用以下语法在视图模板中使用过滤器: {{ expression | filter }} 表达式可以是控制器中定义的模型: $scope.expression = 45 $scope.expression = 45; $scope.filter = 'currency'; $scope.filterFn = function (value, filterName, filterArgs) { if (filterName) return $f
{{ expression | filter }}
表达式可以是控制器中定义的模型:
$scope.expression = 45
$scope.expression = 45;
$scope.filter = 'currency';
$scope.filterFn = function (value, filterName, filterArgs) {
if (filterName)
return $filter(filterName)(value, filterArgs);
return value;
}
如何传递变量中的内置过滤器?此表达式不起作用:
$scope.filter = 'currency'
编辑:我现在使用的是答案中稍微修改的函数
控制器:
$scope.expression = 45
$scope.expression = 45;
$scope.filter = 'currency';
$scope.filterFn = function (value, filterName, filterArgs) {
if (filterName)
return $filter(filterName)(value, filterArgs);
return value;
}
视图:
与其在视图中应用过滤器,不如直接在控制器中应用过滤器,如下所示:
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>
myvar:{{filterFn(yourVar)}
与其在视图中应用过滤器,不如直接在控制器中应用过滤器,如下所示:
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>
myvar:{{filterFn(yourVar)}
与其在视图中应用过滤器,不如直接在控制器中应用过滤器,如下所示:
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>
myvar:{{filterFn(yourVar)}
与其在视图中应用过滤器,不如直接在控制器中应用过滤器,如下所示:
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>
myvar:{{filterFn(yourVar)}
如果需要动态过滤器名称,另一个解决方案是创建过滤器,作为其他过滤器的包装:
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);
}
})
在视图中使用as:{{{问候语| FilterRapper:filterName}
签出fiddle以获取完整示例。如果您想要动态过滤器名称,另一个解决方案是创建过滤器,作为其他过滤器的包装:
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);
}
})
在视图中使用as:{{{问候语| FilterRapper:filterName}
签出fiddle以获取完整示例。如果您想要动态过滤器名称,另一个解决方案是创建过滤器,作为其他过滤器的包装:
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);
}
})
在视图中使用as:{{{问候语| FilterRapper:filterName}
签出fiddle以获取完整示例。如果您想要动态过滤器名称,另一个解决方案是创建过滤器,作为其他过滤器的包装:
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);
}
})
在视图中使用as:{{{问候语| FilterRapper:filterName}
签出fiddle以获取完整示例。动态您不能提供筛选器名称,而必须在视图ex{amount | currency}中动态声明您不能提供筛选器名称,而必须在视图ex{{amount | currency}中动态声明您不能提供筛选器名称,而必须在视图ex{{amount currency}中声明动态地,您不能给出过滤器名称,而是必须在视图ex{{amount | currency}中声明