[解決済み] AngularJSのUI-Routerでステートをデフォルトのサブステートにリダイレクトする。
質問
あるデータを表示するタブベースのページを作成しています。 AngularJsでUI-Routerを使用して状態を登録しています。
私の目的は、ページロード時に1つのデフォルトのタブが開くようにすることです。各タブにはサブタブがあり、タブを変更するときにデフォルトのサブタブが開かれるようにしたいと思います。
私は
onEnter
関数でテストしていましたが、内部では
$state.go('mainstate.substate');
を使っていますが、ループ効果の問題でうまくいかないようです(state.go to substateで親のstateを呼び出したりして、ループになります)。
$stateProvider
.state('main', {
url: '/main',
templateUrl: 'main.html',
onEnter: function($state) {
$state.go('main.street');
}
})
.state('main.street', {
url: '/street',
templateUrl: 'submenu.html',
params: {tabName: 'street'}
})
ここでは プランカーデモ .
今のところ、デフォルトのタブが開いていないことを除けば、すべてがうまくいっており、まさに私が必要としているものです。
提案、意見、アイデアをありがとうございました。
どのように解決するのですか?
更新しました。 1.0以降 redirectToをいきなりサポート。
https://ui-router.github.io/ng1/docs/latest/interfaces/state.statedeclaration.html#redirectto
私が作成した の例を示します。 .
この解決策は、リダイレクトの問題に対する素晴らしい "Comment" によるものです。
.when()
(
https://stackoverflow.com/a/27131114/1679310
)
そして
に対するクールなソリューション
(クリス T によるものですが、元の投稿は yahyaKacem によるものです)
https://github.com/angular-ui/ui-router/issues/1584#issuecomment-75137373
ではまず、リダイレクトの設定でmainを拡張してみましょう。
$stateProvider
.state('main', {
url: '/main',
templateUrl: 'main.html',
redirectTo: 'main.street',
})
そして、この数行だけを実行に追加します。
app.run(['$rootScope', '$state', function($rootScope, $state) {
$rootScope.$on('$stateChangeStart', function(evt, to, params) {
if (to.redirectTo) {
evt.preventDefault();
$state.go(to.redirectTo, params, {location: 'replace'})
}
});
}]);
この方法で、どのステートでもデフォルトのリダイレクトを調整することができます。 はこちら
EDIT: @Alec さんのコメントから、ブラウザの履歴を保存するオプションを追加しました。
関連
-
[解決済み] JavaScriptで2つの日付を比較する
-
[解決済み] AngularJSでチェックボックスの値のリストにバインドするにはどうすればいいですか?
-
[解決済み] 部分テンプレートとテンプレートの複雑なネスト
-
[解決済み】AngularJSのディレクティブスコープにおける「@」と「=」の違いは何ですか?
-
[解決済み】AngularJS ui-router ログイン認証
-
[解決済み] チェックボックスが選択されているかどうかを確認するjQuery
-
[解決済み] オブジェクトの配列からReactコンポーネントをレンダリングする
-
[解決済み] 無効になっている入力フィールドの値を送信する
-
[解決済み] Chrome拡張機能:popup.htmlを強制終了させる
-
[解決済み] JavaScriptでDIVを表示・非表示にするには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ExtJS 4のイベントハンドリングについて
-
[解決済み] モバイルWeb HTML5フレームワークの選び方【終了しました
-
[解決済み] なぜ "use strict "はパフォーマンスを10倍向上させるのか?
-
[解決済み] Chart.jsを使ってドーナツチャートの中にテキストを追加するには?
-
[解決済み] node.jsで文字列のsha1ハッシュを取得するにはどうすればよいですか?
-
[解決済み] 文字列が空白であるかどうかをチェックする
-
[解決済み] Reactメモを使うべきではない場合とは?
-
[解決済み] JavaScriptで長い配列を小さい配列に分割する方法
-
[解決済み] <ng-content>が空かどうかを確認する方法は?(これまでのAngular 2+で)
-
[解決済み] javascriptのキャンバスで画像をリサイズする (スムーズ)