Anscheinend kannst du.
Normalerweise übergeben Sie Bereichsvariablen als Funktionsparameter an den Filter:
function MyCtrl($scope){
$scope.currentDate = new Date();
$scope.dateFormat = 'short';
}
<span ng-controller="MyCtrl">{{currentDate | date:dateFormat}}</span> // --> 7/11/13 4:57 PM
Um den aktuellen Bereich weiterzugeben, müssen Sie jedoch Folgendes übergeben this
:
<span ng-controller="MyCtrl">{{currentDate | date:this}}</span>
und this
wird ein Verweis auf den aktuellen Geltungsbereich sein:
Vereinfacht:
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
Warnung:
- Seien Sie vorsichtig damit und verwenden Sie den Bereich nur, um die Werte im Filter zu lesen, da Sie sich sonst leicht in der $ Digest-Schleife wiederfinden.
- Filter, die eine so "starke" Abhängigkeit (den gesamten Umfang) erfordern, sind in der Regel sehr schwer zu testen.