Angularjs $rootScope未在工厂/服务中定义
我有这样一个代码:Angularjs $rootScope未在工厂/服务中定义,angularjs,Angularjs,我有这样一个代码: angular.module('app') .factory('ME', function($http, $location, $rootScope){ return { search: function(search_data, success, $rootScope) { $rootScope.errors = "lalala"; } } }); 当我调用函数se
angular.module('app')
.factory('ME', function($http, $location, $rootScope){
return {
search: function(search_data, success, $rootScope) {
$rootScope.errors = "lalala";
}
}
});
当我调用函数search()并进行调试时,我会收到一个错误,指出
$rootScope
未定义。如何在工厂中使用$rootScope
?我的问题的答案在我对这个问题的第一次评论中。要清除此消息,您需要从搜索
函数参数中删除$rootScope
。<代码>功能(搜索数据,成功,$rootScope)这就是清除结果的原因。
但是我想发布更多的东西,这是一条评论,认为应该修改这种方法,并且可能首先不使用根范围。在这种情况下,可能应该这样做,因为我们正在设置错误消息,但如果它是任何其他值,那么您应该去掉$rootScope
,并添加局部变量,这些变量可以稍后从函数方法返回。像这样:
angular.module('app')
.factory('ME', function($http, $location, $rootScope){
var result;
return {
search: function(search_data, success) {
result = "lalala";
},
update: function(){
result = "tralala";
},
message: function(){return result;}
}
});
我添加这一点作为进一步的解释,因为一般来说,我希望更好地理解何时以及如何使用
根范围好吧,我已经找到了我自己问题的答案:/只是从搜索功能中删除$rootScope
,这就是清除结果的原因。范围被传递给控制器,不是工厂。@Davidtroon您的陈述是正确的,但是$rootScope在此实例中是一项服务。@Davidtroon您是说一种好的“角度方法”不是将范围传递给工厂,而是使用工厂及其自身变量将值返回给控制器,然后使用范围变量和工厂变量?(如果我解释得好的话)