$ rootScope未在工厂/服务中定义

时间:2013-12-30 22:03:58

标签: angularjs

我有这样的代码:

    angular.module('app')
    .factory('ME', function($http, $location, $rootScope){

       return {
        search: function(search_data, success, $rootScope) {
           $rootScope.errors = "lalala";
        }
       }
    });

当我调用函数search()并调试时,我收到一条错误消息,指出$rootScope未定义。如何在工厂中使用$rootScope

1 个答案:

答案 0 :(得分:2)

我的问题的答案在于我对这个问题的第一次评论。为了清除此消息,您需要从$rootScope函数参数中删除 search。 - function(search_data, success, $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;} 
       }
    });

我添加这个作为进一步的解释,因为一般来说我希望能更好地理解何时以及如何使用rootScopes