创建服务时,$scope注入报错

define(['app'], function(app){
    function HttpService($scope, $q, $http, appConfig){
        var url = appConfig.BASE_URL,
            ret = {ok: 0, data: {ok: 0}};

        function getA(){
            var deferred = $q.defer();
            deferred.resolve(ret.data); // 模拟请求成功
            return deferred.promise;
        }

       function getB(){
            var deferred = $q.defer();
            deferred.resolve(ret.data);
            return deferred.promise;
       };

        return {
            getA: getA,
            getB: getB
        }
    }
    return app.factory('HttpService', [
        '$scope',
        '$q',
        '$http',
        'appConfig',
        HttpService
    ]);
});

注入$scope,报错
clipboard.png
干掉$scope,能正常跑

clipboard.png
求解

阅读 3.1k
1 个回答

首先,你犯的错误是,HttpService里压根就没用$scope,注入她干嘛?给自己找不自在么^^?

其次,我假设你就是故意想注入$scope,虽不用,但想知道错在哪里。 那么我们先说factory,她本身是一种单例的存在,但$scope是么?看下面文档:

图片描述

注意我选中部分,文档说一个angular应用只有一个rootScope,但可以有多个$scope,那么,既然HttpService是单例,那给他注入的$scope是谁?从哪里来?理解清楚为什么Controller里可以注入$scope很重要,再看文档:

图片描述

注意我选中部分。

多读文档是好习惯哦:scope

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题