1

コントローラーの 1 つにあるのと同じコードを繰り返したくないので、2 つのオプションがあります。

  • 他のコントローラー内でサービスを使用$controllerして、ある種の継承を行います
  • ng-controller同じ上で複数を使用しますelementが、これが可能かどうかわかりませんか?

ある種のコントローラーの継承を実装するための最良の解決策は何ですか?

4

3 に答える 3

5

Angular Docs: Controller Inheritance Exampleを引用するには:

Angular でのコントローラーの継承は、スコープの継承に基づいています。

docsの例に関しては、一般的なメソッドを$scopeinsideに配置すると、それらのメソッドは自動的にinsideChildCtrlで使用可能になります。$scopeBabyCtrl

個人的には、共通コードをサービスに追加し、そのサービスを複数のコントローラーに注入することを好みます。

于 2013-06-03T12:16:36.903 に答える
3

コントローラーのミキシングには問題ありません。ng-controllerただし、同じ要素で 2 回使用することはできないため$controller、コントローラーにバインドするディレクティブを挿入または作成する必要があります。

要素のメイン コントローラー内に挿入するのはあまり意味がありません$controller。代わりに、コンポーネント化されたコントローラーにバインドされたディレクティブを作成します。このようにして、動作をコンポーネント化します。この回答を参照してくださいいつディレクティブを書くのですか? 私の言うことを理解するために。

コントローラーは を制御するためのもの$scopeであり、コントローラーを拡張する方法はありません。複数のコントローラが 1 つのスコープを変更し、それをそれらの間の通信媒体として使用しても問題ありません。

データのフェッチ、オブジェクトの操作、計算などのように、必ずしもスコープを必要としない反復操作がある場合にのみ、サービスを使用してください。

于 2013-06-03T13:17:06.097 に答える
2

共通機能をサービスに分離することも検討できます。

于 2013-06-03T13:02:26.957 に答える