在AngularJS中使用$scope
作为变量,在$scope
内共享控制器的app.run()
有什么缺点?
实际上我这样做是为了使代码通用,从app.run()
中具有相同功能的所有控制器调用。
我正在使用的功能是
$rootScope.getUserInfo = function($scope){
$scope.userinfo = '---------';
}
其中$scope
是我从每个控制器传递的变量
$rootScope.getUserInfo($scope);
答案 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/