Angularjs 如何防止在每个摘要中触发角度过滤器?
我正在开发一个角度应用程序,其中我必须使用20个不同的过滤器,我计划在客户端过滤数据,即使用自定义角度过滤器,我创建了所有自定义过滤器,但问题是,每当某个值被某些函数更改时,my filters就会触发,并且它现在变得一团糟。是否有办法防止这种情况发生?您可以始终在控制器中插入Angularjs 如何防止在每个摘要中触发角度过滤器?,angularjs,angular-filters,Angularjs,Angular Filters,我正在开发一个角度应用程序,其中我必须使用20个不同的过滤器,我计划在客户端过滤数据,即使用自定义角度过滤器,我创建了所有自定义过滤器,但问题是,每当某个值被某些函数更改时,my filters就会触发,并且它现在变得一团糟。是否有办法防止这种情况发生?您可以始终在控制器中插入$filter服务,并在绑定新值之前使用它过滤数据。大概是这样的: HTML 包含单向数据绑定可能有助于提高性能。只需在HTML中使用语法{{:}编辑 实际上,更好的解决方案是使用Angular 1.3提供的一次性绑定+
$filter
服务,并在绑定新值之前使用它过滤数据。大概是这样的:
HTML
包含单向数据绑定可能有助于提高性能。只需在HTML中使用语法{{:}
编辑
实际上,更好的解决方案是使用Angular 1.3提供的一次性绑定+
其语法为{{::expression}
旧答案 一种解决方案可能是bindonce指令 您可以使用
bo bind
来绑定值,而不是ng bind
,这些值只被计算一次,并且没有手表应用于它们,因此它们不必再次计算。因此,应用的过滤器也只执行一次
此处是指向“过滤器”部分的链接:
如果您必须在每个页面上进行许多绑定,那么它的性能将非常好。如果一页上有100或1000个绑定,Angular可能会变得非常慢 不确定发生了什么,但在模型打印之前使用
:
时,在表达式中,它是单向绑定,不会触发或获得双向绑定。同样,用例决定了isI需要如何防止从每个摘要触发过滤器
<div data-ng-app="app">
<div data-ng-controller="MainController as main">
{{main.test}}
{{main.testFilter}}
</div>
</div>
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'));
}