私は、ルートにコントローラを定義するオプションがある他の正当な理由があると確信していますが、これはかなり大きなものだと思います。このシナリオを考える:
- あなたが様々な経路を再利用したいテンプレートを持っている/状態
- あなたがルートに基づいてテンプレートに別のコントローラを割り当てることができます。
テンプレートでng-controller
を使用している場合は、私の知る限り、そのテンプレートを別のコントローラで再利用することはできません。
ルート経由でコントローラを割り当てると、柔軟性が増します。
私はそれとして、この例ではUI.Routerを使用するつもりだ
標準的なアプローチは、私が経験を持っているすべてです。
.state('users', {
templateUrl: 'person.html'
controller: 'UsersController'
})
.state('admin', {
templateUrl: 'person.html'
controller: 'AdminController'
})
同じテンプレート、異なるコントローラ、異なるコントローラを使用します。
動的なアプローチ
確か
ない別の実装のためのコントローラを切り替える機能
私は、このユースケースのメリット/デメリットを主張しませんが、私はそれを自分自身を使用しました
私はそれをSOや他のブログで議論しているのを見ました。私は、UIのルータを使用
.state('entity', {
templateUrl: 'person.html'
controller: function(...injectables){
var UserController = function(){ ... }
var AdminController = function(){ ... }
var ControllerClass = isAdmin ? AdminController : UserController;
return new ControllerClass()
}
})
(あなたがtemplateUrlを使用している場合)ですから、/交換コントローラ、だけでなく、あなたのビューを再利用することができます – doge1ord
最後の時間は、ビューのコントローラがロードする前に約束を解決する唯一の方法は、状態の定義を介していました'$ onInit'がコンポーネントのために存在するにもかかわらず、ディレクティブ定義ではできません。理論では –
@ doge1ord、はい。しかし、私は野生でこれを見たことがない、しかし、誰も自分自身を含むルートのコントローラを定義します(しかし、なぜそれが良いのかわかりません)。 –