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

查看:98
本文介绍了javascript - 创建服务时,$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,报错

干掉$scope,能正常跑


求解

解决方案

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

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

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

注意我选中部分。

多读文档是好习惯哦:scope

这篇关于javascript - 创建服务时,$scope注入报错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆