我已经写了一个过滤器函数,它将根据您传递的参数返回数据。我希望在控制器中有相同的功能。是否有可能在控制器中重用过滤器函数?
这是我目前为止尝试过的:
function myCtrl($scope,filter1)
{
// i simply used the filter function name, it is not working.
}
我已经写了一个过滤器函数,它将根据您传递的参数返回数据。我希望在控制器中有相同的功能。是否有可能在控制器中重用过滤器函数?
这是我目前为止尝试过的:
function myCtrl($scope,filter1)
{
// i simply used the filter function name, it is not working.
}
当前回答
在控制器中使用$filter的简单日期示例如下:
var myDate = new Date();
$scope.dateAsString = $filter('date')(myDate, "yyyy-MM-dd");
正如这里解释的- https://stackoverflow.com/a/20131782/262140
其他回答
注入$filter到你的控制器
function myCtrl($scope, $filter)
{
}
然后无论你想在哪里使用这个过滤器,就像这样使用它:
$filter('filtername');
如果你想把参数传递给这个过滤器,使用单独的括号:
function myCtrl($scope, $filter)
{
$filter('filtername')(arg1,arg2);
}
其中arg1是要筛选的数组,arg2是用于筛选的对象。
如果我们想在javascript角过滤器中添加多个条件,而不是单个值,请使用下面的代码:
var modifiedArray = $filter('filter')(array,function(item){return (item.ColumnName == 'Value1' || item.ColumnName == 'Value2');},true)
下面是在Angular控制器中使用过滤器的另一个例子:
$scope.ListOfPeople = [
{ PersonID: 10, FirstName: "John", LastName: "Smith", Sex: "Male" },
{ PersonID: 11, FirstName: "James", LastName: "Last", Sex: "Male" },
{ PersonID: 12, FirstName: "Mary", LastName: "Heart", Sex: "Female" },
{ PersonID: 13, FirstName: "Sandra", LastName: "Goldsmith", Sex: "Female" },
{ PersonID: 14, FirstName: "Shaun", LastName: "Sheep", Sex: "Male" },
{ PersonID: 15, FirstName: "Nicola", LastName: "Smith", Sex: "Male" }
];
$scope.ListOfWomen = $scope.ListOfPeople.filter(function (person) {
return (person.Sex == "Female");
});
// This will display "There are 2 women in our list."
prompt("", "There are " + $scope.ListOfWomen.length + " women in our list.");
很简单吧?
AngularJs允许你在模板或控制器、指令等内部使用过滤器。
在模板中可以使用此语法
{{ variable | MyFilter: ... : ... }}
在控制器内部,你可以使用注入$filter服务
angular.module('MyModule').controller('MyCtrl',function($scope, $filter){
$filter('MyFilter')(arg1, arg2);
})
如果你需要更多的演示例子,这里是一个链接
AngularJs过滤器的例子和演示
如果你想在控制器中过滤对象,试试这个
var rateSelected = $filter('filter')($scope.GradeList, function (obj) {
if(obj.GradeId == $scope.contractor_emp.save_modal_data.GradeId)
return obj;
});
这将根据if条件返回过滤后的对象