显然可以。
通常,您会将范围变量作为函数参数传递给过滤器:
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循环中发现自己。
- 需要这种“大量”依赖关系(整个范围)的过滤器往往很难测试。