2017-07-03 18 views
0

最近、私たちのアプリケーションをng-routeからUi-Routerに移行しました。そして我々はルーティングに関するいくつかの点をリファクタリングしようとしています。角度UI-Router:親なしで子状態を呼び出す方法

私たちのアプリケーションには、リストビューと詳細ビューがあります。詳細ビューはリストビューの上にポップアップとして表示されるので、すべてのリストコントローラロジックを何度も初期化しないために、詳細ビューを子ビューステートとして定義しました。これは次のようになります。

$stateProvider 
    .state('list', 
     { 
     url: "/", 
     template: '<list-directive></list-directive>' 
     }) 
    .state('list.detail', 
     { 
     url: "/detail/{item_id}", 
     template: '<detail-directive></detail-directive>' 
     }) 

実際には期待どおりに動作します。リストビューから詳細ビューを開くと、リストビュー(コントローラを意味する)が再び実行されず、詳細ビューを閉じるとリストビューが残ります。

しかし、今度は、を取り消すことなく、詳細ビューDIRECTLY を呼びたいと思います。現在、詳細状態を直接呼び出すと、親コントローラも実行されます。これをどのように達成できますか?

このシナリオでは、親子関係は適切ではありませんか?

+0

あなたの状態定義にコントローラを追加しようとしましたか?なぜ2つの州の間にloinkがない場合、子供の州を使用するBTW? – DMCISSOKHO

+0

@Abhijeetそのようには動作しません。私は自分自身を活性化させたいです。 – akcasoy

+0

@DMCISSOKHOコントローラーではなく状態定義にディレクティブを追加しています。コントローラーはディレクティブで定義されています。しかし、私はそれがsthを持っているとは思わない。あなたの2つの質問について:それはまさに私がここに尋ねる理由です.. "私は親子関係を使うべきですか?" ... – akcasoy

答えて

0

よれUI-ルータDOC:

子状態が より具体的なものに、より一般的な特徴からドリルダウンする、またはマスター/詳細パターンを実装するために使用することができます。 (...)子ステートのビューは、通常、親ステートが作成されたビューポート内でレンダリングします。これはネストされたビュー(...)と呼ばれます。これらのサブ状態は、共通の親状態の連絡先を共有し、親からのデータと動作を継承します。

だから、これらの動作をしたくない場合は、使用する必要があります。

+0

このケースのために新しい状態を定義することによって、同じコンポーネントビューを直接呼び出すこともできますが、その場合は親自体のように動作します。 – akcasoy

0

それはこのように仕事をした:

$stateProvider 
    .state('list', 
     { 
     url: "/", 
     template: '<list-directive></list-directive>' 
     }) 
    .state('detail', 
     { 
     url: "/detail/{item_id}", 
     template: '<detail-directive></detail-directive>' 
     }) 
    .state('list.detail', 
     { 
     url: "detail/{item_id}", 
     template: '<detail-directive></detail-directive>' 
     }) 

しかし角度はスラッシュが問題となっている.. ..非常に脆弱であり、非常に小さな変化と非常に異なる動作をします。

子の状態list.detailのURLにはスラッシュがありません。しかし、新しい状態の詳細(ex:list.detailと同じ内容を持つ)にはスラッシュが付いているので、直接呼び出すことができます。だから、私たちは子供と親の両方で同じ状態を持っています。

URL「host/detail/5」を直接呼び出すと、親を取り消すことなく詳細ビューに移動します。そして、ui-sref = "。detail(5)"と呼びます。親の中の子の状態(list.detail)に行きます。

関連する問題