在使用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优化建议