这些出现也是如此。但他们是一样的吗? (注意$ scope.active)
第一个:
angular.module('my.controllers', []).controller('MyController', ['$scope', 'myService',
function($scope, myService) {
$scope.myFilters = myService.myFilters;
$scope.active = $scope.myFilters.length > 0;
$scope.$watch(function() {
return myService.myFilters;
}, function(newFilters) {
$scope.myFilters = newFilters;
$scope.active = $scope.myFilters.length > 0;
},true);
}]);
第二个:
angular.module('my.controllers', []).controller('MyController', ['$scope', 'myService',
function($scope, myService) {
$scope.myFilters = myService.myFilters;
$scope.active = function(){return $scope.myFilters.length > 0};
$scope.$watch(function() {
return myService.myFilters;
}, function(newFilters) {
$scope.myFilters = newFilters;
},true);
}]);
答案 0 :(得分:1)
在第二个场景中绑定到HTML中的active
时,在每个apply-digest周期上都会被称为,因为在调用之前函数的结果是未知的。这给你两个不同之处:在控制器函数运行后对$scope.myFilters.length
的更改将不会反映在第一个场景中的绑定中(如果你自己不更新值),并且会有一个(尽管是最小的) )由于每个apply-digest循环后函数被称为至少,因此第二种情况下的性能受到了影响。