新角色。我试图从http get方法获取json响应。
我的代码是,
app.factory('getdata', function ($http, $q){
this.getlist = function(){
alert('1');
return $http.get('http://www.w3schools.com/angular/customers.php',{'Access-Control-Allow-Origin': 'localhost:*'})
.then(function(response) {
console.log('response'); console.log(response.data); //I get the correct items, all seems ok here
alert('2');
return response.data;
});
}
return this;
});
/* Stream page controller */
app.controller('streamCtrl', function($scope,getdata, $ionicSlideBoxDelegate, $timeout, $ionicScrollDelegate, $location, $sce){
$scope.trustSrc = function(src) {
return $sce.trustAsResourceUrl(src);
}
getdata.getlist()
.then(function(arrItems){
$scope.sliders = arrItems;
});
alert($scope.sliders);
我收到的警告就像1,' undefined'和2 但是$ scope.sliders有数据。因为一旦我调整屏幕大小并且我可以在
中获得正确的警报getdata.getlist().then(function(arrItems) {
$scope.sliders = arrItems;
alert($scope.sliders);
});
答案 0 :(得分:6)
获取提醒的原因是undefined
,因为您尚未在控制器中定义$scope.sliders
,而http
请求是异步的,因此alert($scope.sliders);
从响应中获取data
并将该数据设置为$scope.sliders
之前的函数调用。
只有在获得成功回复后才能获得alert($scope.sliders);
值。
其他可能性是,您可以设置$scope.sliders = {}
,然后在调用alert($scope.sliders);
函数{}
显示实际响应时,使用then
显示警告alert
。{ / p>
原始plunker基于问题
检查新plunker
中的评论和更新代码答案 1 :(得分:4)