2 つの同じ部分で構成されるビューがありますが、コンテンツのみが異なります。というわけで、基本的にはコントローラー1つとビュー1つを左右両方でなんとか使いたいと思っています。
私がすること(htmlで):
<div class="board_body">
<div class="left_board" ng-controller="leftBoardController">
<div ng-controller="panelController" ng-include="template"></div>
</div>
<div class="right_board" ng-controller="rightBoardController">
<div ng-controller="panelController" ng-include="template"></div>
</div>
</div>
すべての初期化ロジックを左右のコントローラーに保持し、panelController を使用します。これは左右のパーツのビューです。この場合、異なる値を持つ共通の $scope 変数を使用するため、panelController を共有できます (vars は左右のコントローラーで作成されるため、panelCotrl に表示されます)。
angular.module("radar.leftController", [])
.controller("leftController", function ($scope, ...) {
$scope.data = getSomeData();
}
angular.module("radar.rightController", [])
.controller("rightController", function ($scope, ...) {
$scope.data = getOtherData();
}
angular.module("radar.panelController", [])
.controller("panelController", function ($scope, ...) {
$scope.template = "somePath/panelView.html";
// shared logic for left and right contrls goes here
}
panelView.html で:
<div>data: {{data.length}}</div>
右からは左右の両方の変数を変更できるようですが、左からは左の変数しか変更できません(予想どおり)。(左右のパーツを完全に分離する必要があります)。
では、1 つのコントローラーを再利用する (複数のインスタンスを作成する) 適切な方法は何ですか?