首页 > angularjs, 将太多变量和函数赋值到$scope是否会影响效率?

angularjs, 将太多变量和函数赋值到$scope是否会影响效率?

在使用angularjs开发的时候,我将一些并不需要与页面交互的函数和变量赋值到$scope,是否会导致效率更低。
比如

$scope.test1 = function() {
  ....
};
$scope.test2 = function() {
  ....
};


//test1和test2并没有在html页面中使用到而是在controller使用
if($scope.test1() && $scope.test2()) {
    ....
}

改成

var test1 = function() {
  ....
};
var test2 = function() {
  ....
};

if(test1() && test2()) {
    ....
}

是否更佳合适。
PS: $scope是怎样的一个作用机制,使用的时候应该注意些什么?


一个$scope对应一个controller,$scope里面放这个controller要用到的变量和函数,与展示、交互无关的变量和函数不要放在$scope上,公用的变量放在$rootScope里,公用的函数放service里。
改成

app.service('myService', function() {       
    this.test1 = function() {
     ....
    };
    this.test2 = function() {
     ....
    };
});

用的时候

app.controller('myCtrl', function($scope, myService) {
    $scope.hex = myService.test1();
});

最好只把与view相关的事件和数据存放到$scope上,其他的你可以声明内部函数或者变量。

function isDemo() {
    // some code
    return true;
}
$scope.clickEve = function() {
    if(isDemo()) {
        $scope.youdata = selfChange;
    }
}

$scope是数据展示和各种事件的载体。与展示、交互行为无关的数据和方法最好不要挂载到$scope上,保持$scope的纯粹。

处理的方法声明一个函数即可,如

var test1 = function() {
  ....
};
var test2 = function() {
  ....
};

if(test1() && test2()) {
    ....
}

如果多个地方使用到了test1和test2,根据功能将他们添加到相应的service即可


建议你看看这个 angular优化建议

【热门文章】
【热门文章】