gpt4 book ai didi

javascript - 为什么 Angular 中的这个变量没有更新?

转载 作者:行者123 更新时间:2023-12-02 17:54:57 25 4
gpt4 key购买 nike

我有一个名为VforumController的 Controller 和一个名为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)时,我可以看到我需要的数据,但是,我的 Controller 中的值没有更新。我假设 $scope.currentSlide 会变成我正在寻找的数据。就我而言,它是从 PHP 脚本返回的哈希 URL。

最佳答案

$http 返回一个 promise ,因此您需要等待它加载然后分配它。您不通过 promise “成功/然后/错误”链的返回值直接进行通信。所有通信都是通过 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;
}
);

关于javascript - 为什么 Angular 中的这个变量没有更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21034333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com