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