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是怎样的一个作用机制,使用的时候应该注意些什么?

阅读 3.9k
4 个回答

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

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

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

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

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

一个$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;
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题