web-dev-qa-db-ja.com

Angular.jsのベストプラクティス-コントローラーの拡張、コントローラーのデフォルトのオーバーライド

ここに実際のAngularの問題があります。頭を包み込むことはできません。

既存のコントローラーの機能を拡張し、アプリケーションの他のページで拡張コントローラーを使用するためのベストプラクティスは何ですか?言い換えると:Angularでコントローラーの継承を行う方法

編集済み-23/09/2014、元のユースケースの説明は、訪問者が私がここにいることをよりよく理解するのに役立つとは思わないでください。本当の問題から人々を引き離すと思う。

23
Mihaly KR

半年後、私は何が起こっているかを完全に理解したと思います。この投稿へのコメントで指摘されているように、最も簡単な答えはサービスです。

最も最適なケースでは、スコープ変数はすべて工場/サービスから収集された値です。それでも、1つの追加関数$ scope.someFunction(){}を使用してまったく同じコントローラーを使用し、残りは保持したい場合があります。この場合、「薄い」コントローラーロジックがあります。これは望ましいコントローラー設計ですが、最終的には100行以上のコードになる可能性があります。余分なコントローラーロジック($ scope.someFunction()など)が必要なため、他のコントローラーに複製されたくない

だったらどうしようか?

答えはこれです:

  1. 工場で状況を解決するためにすべてを行ったことを確認してください
  2. あなたがやったことを絶対に確信しているなら、コントローラーの注入に行きます:

    .controller('childController', function ($scope, $controller) {
      'use strict';
      $controller('parentController', {$scope: $scope});
      $scope.someFunction=function(){}
    })
    

とても簡単です。 -繰り返しますが、通常は、工場で問題を解決できます。

これが便利だと思います;)

44
Mihaly KR