これは重複しているかどうかわかりませんが、私のために働いていたものは見つけられませんでしたので、この質問を投稿しています。約束事後の角度状態の変化
私は、特定のルートにユーザーを誘導する前にデータベースから値を取得する必要があるため、表示するコンテンツを決定することができます。
$state.go(..)
の直前にe.preventDefault()
を移動すると正しく動作しません。問題は、デフォルトの状態を読み込み始め、httpからの応答を受け取ったときだけです。main.home
にリダイレクトします。つまり、dbリクエストが2秒かかるとしたら、main.home
にリダイレクトするまでに2秒かかります。つまり、ユーザは、想定されていないコンテンツを約2秒間見ています。
状態変更の開始時にデフォルトを防止し、状態変更の終了時にユーザーをリダイレクトする方法はありますか? また、状態変更の開始時にデフォルトを防止できれば、どのようにデフォルト状態を継続できますか?
(function(){
"use strict";
angular.module('app.routes').run(['$rootScope', '$state', '$http', function($rootScope, $state, $http){
/* State change start */
$rootScope.$on('$stateChangeStart', function(e, to, toParams, from, fromParams){
e.preventDefault();
$http
.get('/url')
.error(function(err){
console.log(err);
})
.then(function(response){
if(response.data === 2){
// e.preventDefault()
$state.go('main.home');
}
// direct to default state
})
}
}]);
});
を次のように、それは素晴らしい作品、ありがとうございます。 (あなたの例で$ qも入力してください) – Timo