AngularJS $ http工厂不工作
问题描述:
我猜$http.get
部分不工作。 这是我的代码:
.controller('home', function($scope, request){
$scope.list = request.get(baseUrl);
})
.factory('request', function($http){
var get = function(url){
$http.get(url).success(function(data){
console.log(data);
return data; //returns nothing
});
}
return {
get : get
}
});
答
一般来说,你的函数不返回任何东西 - 如果我是叫request.GET中(),它会返回undefined。你要像
.controller('home', function($scope, request){
request.get(baseUrl).then(function(data){ // I prefer then and catch semantics
$scope.list = data; // as they're standard promises form
})['catch'](function (err){console.log(err)});
})
.factory('request', function($http){
var get = function(url){
return $http.get(url).then(function(data){
console.log(data);
return data;
});
}
return {
get : get
}
});
虽然这是一个简单的情况下不必要的混淆(我只是把$http.get().then().catch()
东西控制器,而不是工厂。
答
试试这个。
.factory('request', function($http){
var get = function(url){
return $http.get(url).success(function(data){
return data;
});
}
return {
get : get
}
});
更新您的控制器。
request.get(url).then(function (data) {
$scope.data = data;
}, function (response) {
// handle error
});
+0
控制器也是错误的: 'request.get(baseUrl).then(function(data){$ scope.list = data});' 你在重击中做了什么,我想我应该先看看那个第一个...对不起。 – marneborn 2014-09-04 18:29:11
这样定义'函数成功的回调函数(数据,状态,头文件,配置)'然后打印每个参数到控制台并让我们知道输出 – bmleite 2014-09-04 16:53:31
@bmleite成功函数实际上不执行我的意思是$ http.get不工作 – pyprism 2014-09-04 16:59:05
为什么你说“ $ http.get不工作“?你看到在控制台中的任何错误? – bmleite 2014-09-04 17:05:12