我正在开发一个角度应用程序,我必须使用20个不同的过滤器,我计划在客户端过滤数据,即使用自定义角度过滤器,我创建了所有自定义过滤器,但问题是每次都是一些函数改变了我的过滤器触发的值,现在它变得一团糟。有没有办法防止这种情况发生?
答案 0 :(得分:1)
您始终可以在控制器中注入$filter
服务,并在绑定新值之前使用它来过滤数据。像这样:
https://jsfiddle.net/relferreira/4r37kzu8/
HTML
<div data-ng-app="app">
<div data-ng-controller="MainController as main">
{{main.test}}
{{main.testFilter}}
</div>
</div>
JS
angular.module('app', []);
angular.module('app')
.controller('MainController', mainController);
mainController.$inject = ['$scope', '$filter'];
function mainController($scope, $filter){
var vm = this;
vm.test = 'test filter: '
vm.testFilter = $filter('date')(new Date('2015-12-02'));
}
包含单向数据绑定可能会有所帮助。只需在HTML
中使用语法{{:___}}
即可
答案 1 :(得分:0)
修改强>
实际上,更好的解决方案是使用Angular 1.3+提供的一次性绑定
其语法为{{::expression}}
旧答案
一个解决方案可能是bindonce指令https://github.com/Pasvaz/bindonce
而不是ng-bind
您使用bo-bind
来绑定值,而且只会对其进行一次评估,并且不会对其应用任何监视,因此他们不必再次评估。因此,应用的过滤器也只执行一次。
这里是过滤器部分的链接: https://github.com/Pasvaz/bindonce#filters
如果你必须为每页制作许多绑定,那真的很有效。如果在一个页面上有100或1000个绑定,Angular会变得非常慢。