コントローラーの 1 つにあるのと同じコードを繰り返したくないので、2 つのオプションがあります。
- 他のコントローラー内でサービスを使用
$controllerして、ある種の継承を行います ng-controller同じ上で複数を使用しますelementが、これが可能かどうかわかりませんか?
ある種のコントローラーの継承を実装するための最良の解決策は何ですか?
コントローラーの 1 つにあるのと同じコードを繰り返したくないので、2 つのオプションがあります。
$controllerして、ある種の継承を行いますng-controller同じ上で複数を使用しますelementが、これが可能かどうかわかりませんか?ある種のコントローラーの継承を実装するための最良の解決策は何ですか?
Angular Docs: Controller Inheritance Exampleを引用するには:
Angular でのコントローラーの継承は、スコープの継承に基づいています。
docsの例に関しては、一般的なメソッドを$scopeinsideに配置すると、それらのメソッドは自動的にinsideChildCtrlで使用可能になります。$scopeBabyCtrl
個人的には、共通コードをサービスに追加し、そのサービスを複数のコントローラーに注入することを好みます。
コントローラーのミキシングには問題ありません。ng-controllerただし、同じ要素で 2 回使用することはできないため$controller、コントローラーにバインドするディレクティブを挿入または作成する必要があります。
要素のメイン コントローラー内に挿入するのはあまり意味がありません$controller。代わりに、コンポーネント化されたコントローラーにバインドされたディレクティブを作成します。このようにして、動作をコンポーネント化します。この回答を参照してくださいいつディレクティブを書くのですか? 私の言うことを理解するために。
コントローラーは を制御するためのもの$scopeであり、コントローラーを拡張する方法はありません。複数のコントローラが 1 つのスコープを変更し、それをそれらの間の通信媒体として使用しても問題ありません。
データのフェッチ、オブジェクトの操作、計算などのように、必ずしもスコープを必要としない反復操作がある場合にのみ、サービスを使用してください。
共通機能をサービスに分離することも検討できます。