Мабуть, можна.
Зазвичай ви передаєте змінні області до фільтра як параметр функції:
function MyCtrl($scope){
$scope.currentDate = new Date();
$scope.dateFormat = 'short';
}
<span ng-controller="MyCtrl">{{currentDate | date:dateFormat}}</span> // --> 7/11/13 4:57 PM
Але, щоб передати поточну область дії, потрібно передати this
:
<span ng-controller="MyCtrl">{{currentDate | date:this}}</span>
і this
буде посиланням на поточний обсяг:
Спрощена:
app.controller('AppController',
function($scope) {
$scope.var1 = 'This is some text.';
$scope.var2 = 'And this is appended with custom filter.';
}
);
app.filter('filterReceiptsForDate', function () {
return function (input, scope) {
return input + ' <strong>' + scope.var2 + '</strong>';
};
});
<div ng-bind-html-unsafe="var1 | filterReceiptsForDate:this"></div>
PLUNKER
Увага:
- Будьте обережні з цим і використовуйте область лише для зчитування значень всередині фільтра, бо інакше ви легко знайдете себе в циклі $ digest.
- Фільтри, які вимагають такої "важкої" залежності (весь обсяг), як правило, дуже важко перевірити.