我有一个名为VforumController
的控制器和一个名为VforumModel
VforumController
VforumJS.controller('VforumController', function($scope, VforumModel)
{
$scope.currentIndex = 0;
$scope.presentationData.location = "http://a.web.url";
$scope.currentSlide = VforumModel.getImage({
'type' : 'slide',
'index' : $scope.currentIndex + 1,
'location' : $scope.presentationData.location
});
});
VforumModel
VforumJS.service('VforumModel', function($http)
{
return {
getImage: function($data)
{
return $http.post('resources/auth.php', $data, {timeout:20000}).success(function(response)
{
console.log(response); //this outputs the correct data I need to the console
return response;
});
}
}
})
当我执行console.log(response)
时,我可以看到我需要的数据,但是,我的控制器中的值不会更新。我假设$scope.currentSlide
会转变为我正在寻找的数据。在我的例子中,它是从PHP脚本返回的散列URL。
答案 0 :(得分:2)
$http
返回一个promise,因此您需要等待它加载然后分配它。您不通过承诺“success / then / error”链的返回值直接进行通信。所有通信都是通过promise对象完成的。你“等待”发生了什么事情,一旦它发生了,就会召唤你......他们总是很难解释......
VforumJS.service('VforumModel', function($http){
return {
getImage: function($data){
return $http.post('resources/auth.php', $data, {timeout:20000});
}
}
});
VforumModel.getImage({
'type' : 'slide',
'index' : $scope.currentIndex + 1,
'location' : $scope.presentationData.location
}).success(function(response) {
$scope.currentSlide = response;
}
);