首页 > angular1.5.7学习过程中控制台输出$q is not defined

angular1.5.7学习过程中控制台输出$q is not defined

我跟着教程学angularjs,跟教程一样组织代码后访问页面报错如下:

angular.js:13708 ReferenceError: $q is not defined
    at handleRequest (news.client.service.js:8)
    at Object.list (news.client.service.js:27)
    at Scope.NewsController.$scope.loadNews (news.client.controller.js:9)
    at new NewsController (news.client.controller.js:18)
    at Object.invoke (angular.js:4709)
    at $controllerInit (angular.js:10234)
    at nodeLinkFn (angular.js:9147)
    at compositeLinkFn (angular.js:8510)
    at compositeLinkFn (angular.js:8513)
    at publicLinkFn (angular.js:8390)

源代码:

angular.module('webapp').service("NewsService",["$http","$q",NewsService]);

function NewsService($http) {
    function handleRequest(merhod,url,data) {
        var defered = $q.defer();
        var config = {
            method:method,
            url:url
        }
        if("POST" === method){
            config.data = data
        }else if("GET" === method){
            config.params =data
        }
        $http(config).success(function (data) {
            defered.resolve(data);
        }).error(function (err) {
            defered.reject(err)
        });
        return defered.promise;
    }
    return{
        list:function (params) {
            return handleRequest('GET','/news',params)
        },
        save:function (data) {
            return handleRequest('POST','/news',data)
        },
        detail:function (id) {
            return handleRequest('POST','/news'+ id)
        }
    }
}

请问如何处理,新手轻拍。。。


NewsService函数参数中未加$q参数


你写法的问题,要把$q注入到服务中去

(function(){
    angular.module('MyApp', [])
        .controller('MyController', MyController)
        .service('NewsService', NewsService)

    MyController.$inject = ['NewsService'];
    NewsService.$inject = ['$http', '$q'];

    function MyController(NewsService) {
        var vm = this;
        vm.name = 'dreamapple';
        NewsService.sayHello();
    }

    function NewsService($http, $q) {
        var service = {
            sayHello: sayHello
        };
        return service;

        function sayHello() {
            console.log($q);
        }
    }
})();
【热门文章】
【热门文章】