依赖于另一个看过的属性的属性

时间:2013-08-10 11:41:26

标签: angularjs

这些出现也是如此。但他们是一样的吗? (注意$ 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);
}]);

1 个答案:

答案 0 :(得分:1)

在第二个场景中绑定到HTML中的active时,在每个apply-digest周期上都会被称为,因为在调用之前函数的结果是未知的。这给你两个不同之处:在控制器函数运行后对$scope.myFilters.length的更改将不会反映在第一个场景中的绑定中(如果你自己不更新值),并且会有一个(尽管是最小的) )由于每个apply-digest循环后函数被称为至少,因此第二种情况下的性能受到了影响。