我很好奇是否有一种方法可以在应用过滤器后禁用过滤器。
例如:
<h3 class="mention" ng-bind-html="mention | getPlace" place-directive > <span>@</span>{{mention}}</h3>
过滤器:
hungryApp.filter('getPlace', function($stateParams) {
return function(place) {
return '<a>' + '@' + place.placeinfo.placename + '</a>';
}
});
渲染元素后,是否有一个角度方式使该过滤器不会影响它已经过滤的元素?
我能够提出一个编写指令的脏解决方案,它基本上用克隆副本替换元素,但绝对不是最干净的解决方案。
感谢您的任何建议。
答案 0 :(得分:1)
在过滤器中接受一个布尔参数,如果布尔值为true(或者为false),则使其返回未触及的输入。 然后将一个布尔变量作为参数传递给过滤器,并切换它以更改过滤器的行为:
hungryApp.filter('getPlace', function($stateParams) {
return function(place, ignore) {
if (ignore) {
return place;
}
else {
return '<a>' + '@' + place.placeinfo.placename + '</a>';
}
};
});
在控制器中:
$scope.placeFilteringIgnored = false;
$scope.togglePlaceFiltering = function() {
$scope.placeFilteringIgnored = !$scope.placeFilteringIgnored;
}
在视图中:
<h3 class="mention" ng-bind-html="mention | getPlace:placeFilteringIgnored"></h3>
<button ng-click="togglePlaceFiltering()">Toggle place filtering</button>
答案 1 :(得分:1)
答案被接受但实际上并不好。与Angular 1.4一样,引入了一次时间绑定:
{{::mention | getPlace}}