[解決済み] ui-routerでui-srefを使用してパラメータをコントローラに渡す方法
2022-03-14 13:16:10
質問
トランジットしたい状態に対して、2つのパラメータを
ui-sref
のui-routerを使用します。
に状態を遷移させるために、以下のリンクを使うようなものです。
home
と
foo
と
bar
パラメータを指定します。
<a ui-sref="home({foo: 'fooVal', bar: 'barVal'})">Go to home state with foo and bar parameters </a>
受信について
foo
と
bar
の値をコントローラで指定します。
app.controller('SomeController', function($scope, $stateParam) {
//..
var foo = $stateParam.foo; //getting fooVal
var bar = $stateParam.bar; //getting barVal
//..
});
私は
undefined
に対して
$stateParam
をコントローラに追加します。
どうすればいいのか、どなたか教えてください。
編集する
.state('home', {
url: '/',
views: {
'': {
templateUrl: 'home.html',
controller: 'MainRootCtrl'
},
'A@home': {
templateUrl: 'a.html',
controller: 'MainCtrl'
},
'B@home': {
templateUrl: 'b.html',
controller: 'SomeController'
}
}
});
解決方法は?
私は
例
を紹介します。更新情報
state
という定義になります。
$stateProvider
.state('home', {
url: '/:foo?bar',
views: {
'': {
templateUrl: 'tpl.home.html',
controller: 'MainRootCtrl'
},
...
}
そして、これがコントローラーになります。
.controller('MainRootCtrl', function($scope, $state, $stateParams) {
//..
var foo = $stateParams.foo; //getting fooVal
var bar = $stateParams.bar; //getting barVal
//..
$scope.state = $state.current
$scope.params = $stateParams;
})
これでわかることは、state homeのurlが次のように定義されていることです。
url: '/:foo?bar',
ということは、URLのパラメータは
/fooVal?bar=barValue
これら二つのリンクは、コントローラに正しく引数を渡します。
<a ui-sref="home({foo: 'fooVal1', bar: 'barVal1'})">
<a ui-sref="home({foo: 'fooVal2', bar: 'barVal2'})">
また、コントローラは
$stateParams
の代わりに
$stateParam
.
docへのリンクです。
確認することができます こちら
params : {}
また、次のようなものもあります。
新しい
よりきめ細かい設定
params : {}
. すでに見てきたように、パラメータを
url
. しかし
params : {}
の設定により、この定義を拡張したり、urlの一部ではないパラメータを導入したりすることができます。
.state('other', {
url: '/other/:foo?bar',
params: {
// here we define default value for foo
// we also set squash to false, to force injecting
// even the default value into url
foo: {
value: 'defaultValue',
squash: false,
},
// this parameter is now array
// we can pass more items, and expect them as []
bar : {
array : true,
},
// this param is not part of url
// it could be passed with $state.go or ui-sref
hiddenParam: 'YES',
},
...
params で利用可能な設定については $stateProvider
以下はその抜粋です。
- value - {object|function=}。 は、このパラメータのデフォルト値を指定します。これにより、このパラメータは暗黙のうちにオプションとして設定されます...
- array - {boolean=} です。 (デ フ ォ ル ト : false) true にする と 、 param 値は値の配列 と し て扱われます。
- squash - {bool|string=}: squashは、現在のパラメータ値がデフォルト値と同じである場合に、デフォルトのパラメータ値をURLでどのように表現するかを設定します。
これらのパラメーターをこのように呼び出すことができます。
// hidden param cannot be passed via url
<a href="#/other/fooVal?bar=1&bar=2">
// default foo is skipped
<a ui-sref="other({bar: [4,5]})">
動作確認 こちら
関連
-
要素ツリー制御によるvueTreeテーブル
-
vueのグローバルがscss(mixin)を導入。
-
[解決済み】ローカルファイルを開くことができません - Chrome: ローカルリソースの読み込みが許可されていない
-
[解決済み] AngularJSのコントローラ作成時にパラメータを渡すことは可能ですか?
-
[解決済み] Node.jsのプログラムにコマンドライン引数を渡すにはどうしたらいいですか?
-
[解決済み] CSSでテキストや画像の背景を透明にするには?
-
[解決済み] Javascriptで文字列の最後の文字を切り取るにはどうしたらいいですか?
-
[解決済み] jQueryを使用してハイパーリンクのhref属性を変更する方法
-
[解決済み] AngularJSを使用して、ブラウザのコンソールで$scope変数にアクセスするにはどうすればよいですか?
-
[解決済み】 {this.props.children} に props を渡すには?}
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
JSクロスドメインソリューション リアクト構成 リバースプロキシ
-
要素ツリー制御によるvueTreeテーブル
-
JavaScriptにおけるマクロタスクとミクロタスクの詳細
-
vue3.0プロジェクトのアーキテクチャを構築するための便利なツール
-
vue ディレクティブ v-html と v-text
-
Vueでルートネスティングを実装する例
-
Vueのイベント処理とイベントモディファイアの解説
-
[解決済み】SyntaxError: JSONの位置1に予期しないトークンoがある。
-
[解決済み】JavaScriptエラー(Uncaught SyntaxError: Unexpected end of input)
-
[解決済み】「.addEventListener is not a function」なぜこのエラーが発生するのか?