私はここで約束に本当に苦労しています。
1日以上経ちましたが、まだわかりません。
私はAngularに不慣れで、より一般的には約束の「概念」に慣れていないので、何かが欠けていると確信していますが、それを理解することはできません.
基本的に、私は$post
リクエストを使用してリモート Web サービスを呼び出しており、そのsuccess
メソッドでいくつかのデータを更新しています。$rootScope
ログインサービス
this.login = function(url, request) {
return $http.post( url, request ).
success(function(data) {
if (data.return_code === 0) {
userData = {
name: data.name,
role: data.role
}
/*
* Inside this function, $rootScope gets
* updated with userData
*/
storage.update('user_details', userData)
}
else {
// non authorized user
}
return userData
}).
error(function(data, status) {
throw new Error()
})
}
次に、コントローラーで次のようなことを行います
$scope.login = function(url, request) {
loginService.login(url, request).then(function(response) {
/* this is a ui.router redirection to the state 'home' */
$state.go('home')
})
}
問題は、問題を「解決」するページのリロードを行わない限り、新しいページ (home
状態) で $rootScope が更新されないことです。
プロミスの呼び出しはページリダイレクトの完了を待たないように思えますが、 $state.go を $timeout でラップしても問題は解決しません...
私は本当に迷っています、どんな助けもいただければ幸いです