gpt4 book ai didi

javascript - api 调用中的 $scope 变量有时不会更新

转载 作者:行者123 更新时间:2023-11-28 15:01:51 24 4
gpt4 key购买 nike

因此,我尝试在用户成功登录外部 API 后显示一些数据。

当我登录时,有时数据无法正确更新,直到我刷新页面;此外,此错误似乎仅在完全刷新并且我已退出 API 后才会持续存在。

服务是这样的:

angular.module('myApp')
.service('PlayerAPICall', function ($http, $q) {
// AngularJS will instantiate a singleton by calling "new" on this function
var deferred = $q.defer();

return {
getPlayerInfo: function() {
var getPlayerBasic = {
method: 'GET',
url: 'API_URL',
headers: {
'Accept': 'HEADER'
}
};

// This API call returns some basic player information for the current logged in user.
$http(getPlayerBasic).success(function(response) {
deferred.resolve(response);
});

return deferred.promise;
},
}
});

我的指令是这样的(带有相关信息)

angular.module('myApp')
.controller('NavbarCtrl', function($scope, PlayerAPICall) {

// Declare $scope objects.
$scope.playerBasic;

PlayerAPICall.getPlayerInfo().then(function(response) {
$scope.playerBasic = response;
});

})

部分看起来像这样:

  <div class='links-container'>
<div class='row'>
<div class='inputs'>
<form ng-submit='submit()'>
<p ng-show='playerBasic.first_name != null' class='md-text logout-container'>
Hello, {{playerBasic.first_name}}
<span class='logout-span'><button class='btn btn-primary logout-btn' type='submit' ng-model='submit'>Logout</button></span></p>
<p ng-show='playerBasic.first_name == null' class='md-text logout-container'>
Hello, {{playerBasic.email}}
<span class='logout-span'><button class='btn btn-primary logout-btn' type='submit' ng-model='submit'>Logout</button></span>
</p>
</form>
</div>
</div>

虽然我知道该用户存在名称变量,但有时它会说:

“你好,”而不是“你好,名字”。

我不完全确定为什么 $scope 没有改变。

最佳答案

您必须将 deferred 的创建移至函数调用中,因为您无法重用 defer 对象。

return {
getPlayerInfo: function() {
var getPlayerBasic = {
method: 'GET',
url: 'API_URL',
headers: {
'Accept': 'HEADER'
}
};

var promise = $http(getPlayerBasic);
var derivedPromise = promise.then(function(response) {
return response.data;
});
return derivedPromise;
},
}

您甚至不需要创建新的 Promise,因为 $http 返回 Promise 本身,因此您的实现是多余的。你可以这样做: return $http(getPlayerBasic);

关于javascript - api 调用中的 $scope 变量有时不会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40600408/

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