我已经写了一个过滤器函数,它将根据您传递的参数返回数据。我希望在控制器中有相同的功能。是否有可能在控制器中重用过滤器函数?

这是我目前为止尝试过的:

function myCtrl($scope,filter1)
{ 
    // i simply used the filter function name, it is not working.
}

当前回答

首先注入$filter到你的控制器中,确保ngSanitize被加载到你的应用中,随后在控制器中使用如下:

$filter('linky')(text, target, attributes)

经常查看angularjs的文档

其他回答

首先注入$filter到你的控制器中,确保ngSanitize被加载到你的应用中,随后在控制器中使用如下:

$filter('linky')(text, target, attributes)

经常查看angularjs的文档

如果我们想在javascript角过滤器中添加多个条件,而不是单个值,请使用下面的代码:

var modifiedArray = $filter('filter')(array,function(item){return (item.ColumnName == 'Value1' || item.ColumnName == 'Value2');},true)

我还有另外一个例子,是我在我的过程中做的:

我得到一个像这样有value-Description的数组

states = [{
    status: '1',
    desc: '\u2713'
}, {
    status: '2',
    desc: '\u271B'
}]

在我的Filters.js:

.filter('getState', function () {
    return function (input, states) {
        //console.log(states);
        for (var i = 0; i < states.length; i++) {
            //console.log(states[i]);
            if (states[i].status == input) {
                return states[i].desc;
            }
        }
        return '\u2718';
    };
})

然后,一个测试变量(控制器):

function myCtrl($scope, $filter) {
    // ....
    var resp = $filter('getState')('1', states);
    // ....
}

注入$filter到你的控制器

function myCtrl($scope, $filter)
{
}

然后无论你想在哪里使用这个过滤器,就像这样使用它:

$filter('filtername');

如果你想把参数传递给这个过滤器,使用单独的括号:

function myCtrl($scope, $filter)
{
    $filter('filtername')(arg1,arg2);
}

其中arg1是要筛选的数组,arg2是用于筛选的对象。

在控制器中使用$filter的简单日期示例如下:

var myDate = new Date();
$scope.dateAsString = $filter('date')(myDate, "yyyy-MM-dd"); 

正如这里解释的- https://stackoverflow.com/a/20131782/262140