javascript - angular1.5.7学习过程中控制台输出$q is not defined
本文介绍了javascript - 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)
}
}
}
请问如何处理,新手轻拍。。。
解决方案
你写法的问题,要把$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);
}
}
})();
这篇关于javascript - angular1.5.7学习过程中控制台输出$q is not defined的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文