Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS-将过滤器从控制器传递到视图模板_Angularjs - Fatal编程技术网

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

在AngularJS中,使用以下语法在视图模板中使用过滤器:

{{ 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}中声明