フロントエンドにAngularJSを使用して、WebアプリケーションにMVCパターン(具体的にはASP.NETのMVCフレームワーク)を使用しているという、一般的なシナリオであると私が信じているものに遭遇しました。私の問題は、ビューに渡されるモデルの一部である特定の値があることです。これは、理想的にはコントローラーが初期化されるとすぐに、Angular コントローラーの $scope でも利用できるようにしたいということです。
これを行う方法は、以前に尋ねられ、回答された質問です。明らかな候補があります: ngInit
. ただし、ある時点で、Angularはドキュメントを更新し、この特定の考えに対する警告のように思われるものを追加しました。
の唯一の適切な使用法は、以下のデモに見られるように、 の
ngInit
特別なプロパティをエイリアシングすることです。このケース以外では、スコープの値を初期化するのngRepeat
ではなく、コントローラーを使用する必要があります。ngInit
提案された代替案はあまり関連性がありません。
もちろん、私が考えることができる他の回避策があります。ngModel
ビューは、たとえば、非表示の入力のディレクティブに値を挿入できます。または、警告を無視してngInit
とにかく使用することもできます。しかし、私が考えることができるのは、 と同じことを行うより醜い方法か、ngInit
明らかに悪い方法です。
最終的に、私にとって明白な解決策のように思えることが、明らかに間違った解決策であるという事実は、おそらく、Angular がどのように行われることになっているのか、私の考え方が調和していないことを示しています。したがって、私の質問は「このシナリオにどう対処するか」ではなく、次のとおりです。
- このシナリオにどのように対処または回避する必要がありますか?
- を使用してはいけないのはなぜ
ngInit
ですか?
最初の 2 つのコメントからは明確でないため、明確化: これは、ページの一部または大部分が MVC ビューとして直接提供され、特定の機能のみが Angular によって提供される状況のためのものです。Angular コントローラーに渡したいデータは、モデル内のビューに既に渡されています。Angular コントローラーが別の形式でビューで既に使用可能な同じパラメーターを取得するためだけに、サーバーに対して独自の get 要求を実行する必要はありません。