複数のビューを持つ複雑なページを作成するために ui-select を使用しています。ユーザーがタブ (または私の場合はドロップダウン) を選択すると、各ビューが ajax を介して読み込まれることを知らない人のために。ビューには従来、独自のコントローラーと HTML テンプレートがあります。ビューは、表示されている親ページのスコープを継承しますが、独自の子スコープを持ちます。
私の場合、一部のビューにはコントローラーがまったくありません。それらは非常に単純なので、html ページしかありません。問題は、親ページのスコープの構成オブジェクトでブール値を切り替えて、親ページのいくつかのコントロール フィールドをオフにできるようにしたいということです。すべてが既に存在し、複数のページがこれらのビューを使用しています。単にそれらを展開して、親の何かを切り替えたいだけです。
これには 3 つの方法があります。私は自分のui-routerでresolveメソッドを使用して、ビューがロードされたときに必要なフィールドを明示的に切り替えることができましたが、各ページの各ui-routerでこれを明示的に行う必要があります。クールなコードの再利用はありません。
現在コントローラーがない場合、ui-routerにコントローラーをロードさせることができ、コントローラーはこれを実行できます。ただし、これは、ビューを使用するすべての場所でほとんど不要なコントローラーを手動で追加することを意味し、コードの再利用のようには感じません。
または、ng-init を使用して、読み込み時に必要な値をビューに明示的に設定することもできます。私はまだコントローラーを持っていないので、これが最もクリーンで簡単だと感じます。
ただし、ng-init は眉をひそめられており、おそらくエイリアシングにのみ使用する必要があります。ng-init を使用するよりもクリーンなアプローチはありますか? コントローラーのないビューを持つのは本当に悪いことですか (より正確には、親コントローラーはまだありますが、新しいビューが開いたときに再ロードされません)。