在angularjs中使用$ scope作为变量,在app.run中共享控制器的$ scope的缺点是什么?

时间:2017-01-09 16:11:13

标签: angularjs

在AngularJS中使用$scope作为变量,在$scope内共享控制器的app.run()有什么缺点? 实际上我这样做是为了使代码通用,从app.run()中具有相同功能的所有控制器调用。

我正在使用的功能是

$rootScope.getUserInfo = function($scope){
  $scope.userinfo = '---------';
}

其中$scope是我从每个控制器传递的变量

$rootScope.getUserInfo($scope);

2 个答案:

答案 0 :(得分:1)

我认为传播范围本身并没有什么问题。人们在AngularJS服务中做了很多这样的事情,并且内部完成了很多工作:你创建的控制器通过一个范围来处理。

但是,我会说你的例子中必要var listBuilder = ''; $(response).each(function(index, element){ listBuilder += '<li data-value="' + element.value + '">' + element.title + '</li>'; }); $("#name-dates-dropdown").html(listBuilder); 依赖于传递的范围。为什么不返回用户信息并让调用者将其放在范围内?这样,您就可以在应用中没有范围的部分使用它。

答案 1 :(得分:0)

您可以使用var vm = this;而不是使用$ scope;并使用vm.variablename_or_funcname而不是$ scope.variablename_or_funcname

定义该控制器中的所有内容

你可以在html中附加该控制器,如ng-controller =&#34; mycontroller as vm&#34;

更多信息: https://johnpapa.net/angularjss-controller-as-and-the-vm-variable/