Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs $rootScope未在工厂/服务中定义_Angularjs - Fatal编程技术网

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您是说一种好的“角度方法”不是将范围传递给工厂,而是使用工厂及其自身变量将值返回给控制器,然后使用范围变量和工厂变量?(如果我解释得好的话)