Мы можем передавать аргументы для фильтрации в шаблоне, например:
<li ng-repeat="friend in friends | someFilter:var1">
для
angular.module('myApp.filters', [])
.filter('someFilter', function () {
return function (input, var1) {
return var1;
}
});
но как передать переменную, когда фильтр назначен в контроллере, когда у меня нет доступа к внутреннему шаблону компонента, который я использую. Например, столбец ui-grid
имеет свойство cellFilter
.
Например, я хочу передать данные из $ resource в фильтр
вы можете получить доступ к области управления с помощью grid.appScope
для иллюстрации вашего шаблона ячейки:
cellTemplate: "<div class='ui-grid-cell-contents'>{{ row.entity.userName | someFilter: grid.appScope.var1}}</div>",
И в вашем контроллере:
$http.get('/url/blablab').success(function(){
$scope.var1 = "value passed to filter"
})
Если у вас есть в шаблоне:
<li ng-repeat="friend in friends | someFilter:var1">
Это будет у вас в контроллере:
$filter('someFilter')(friend, var1); // $filter('filterName')(filteredValue, args)