ユーザーが外部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>
私はこの変数にname変数が存在することを知っていますが、時々こう言います:
'Hello、' 'Hello、name'の代わりに。
$スコープが変更されない理由は完全にわかりません。
この実装は、私が持っている問題を(これまで)解決しているようです。私の実装のメモリリークのこと...知っておいてよかったです。私は今からこうするでしょう:) – Tulun