UIルーターでparent.child
という表記を使用して状態/ URLを継承したいとします。私はビューを継承したくない(または他のビューの中にビューを入れ子にする)、またはコントローラを継承したくない、単にURLを継承したい。私は 'ui.router'を依存関係として使用しています。角度UIルータ:ビューを入れ子にしないでURL(parent.child statesを使用)のみを継承します。
これは、ルータの例です:
$stateProvider
.state('products', {
url: '/products',
templateUrl: 'view1.html',
controller: 'products#index'
})
.state('products.show', {
url: '/:id',
templateUrl: 'view2.html',
controller: 'products#show'
})
.state('products.buy', {
url: '/:id/:moreParams',
templateUrl: 'view3.html',
controller: 'products#buy'
})
.state('products.sell', {
url: '/:id/:moreParams/:moreParams',
templateUrl: 'view4.html',
controller: 'products#sell'
});
とコントローラは、次のとおりです。ここ
angular.module('productsModule', [])
.controller('products#index', function($scope){
})
.controller('products#show', function($scope){
})
.controller('products#buy', function($scope){
})
.controller('products#sell', function($scope){
})
、すべてのビューが完全に異なっている、と私は巣に内部の任意のビューを望んでいません他のビュー。また、すべてのコントローラーも異なっており、コントローラーを継承したくない場合、それらはすべて異なる機能で別々です。
ここに私の期待している結果があります。私は何を達成したいことのURLになるので、URLを継承するだけに私を許可する角度である:
/products
/products/:id
/products/:id/:moreParams
/products/:id/:moreParams/:moreParams
(その後、上記のようそれぞれが、独自のビューとコントローラをURL持っている)
これまでのところ、それはです私の研究では、parentState.childState
を使ったこのような継承は、ネストされたビューを望むとき(それは私が望むものではないので、URLを再利用したいだけです)と言い始めています。
私の回避策は、products_show
のようなルータのURLを作成することです。すなわち、ドットの代わりにアンダースコアを使用するため、継承されたものではなく新しい独立したURLとして扱われます。私はこれが最良のアイデアかどうかは分かりません。ほとんどの場合、それは完璧に機能しますが、醜いと思われるからです。
ドットで処理できない場合は、おそらくproducts_show
を使用してください。アイデア?
は、私はあなたがに/製品/ moreParamsによって何を意味するかわからないんだけど、見る、あなたのビューのためのターゲットを指定する方法の詳細については
:ID /:moreParams /製品/ :id /:moreParams /:moreParams – MayK
moreParamsは何でもかまいません。異なるURLにするだけです。それはちょうどurlかもしれません: '/:id/different/URL'、 –