独自のコントローラーを持ち、テンプレートがこのコントローラーにバインドされるディレクティブ (ParentDir) を作成しました。最初の親ディレクティブを「必要とする」独自のコントローラーを持つ別のディレクティブ (Child1) と通信します。以下は簡単な例です。
Module.directive("ParentDir", function () {
return {
templateUrl: '../ParentTemplate',
restrict: 'AEC',
scope: {
},
controllerAs: 'parCtrl',
bindToController: true,
controller: ['$scope', function ($scope) {
parCtrl= this;
parCtrl.title = "PARENT 1 TITLE";
}]}
Module.directive("Child1", function () {
return {
templateUrl: '../Child1Template',
restrict: 'AEC',
require: '^^ParentDir',
scope: {},
controllerAs: 'ch1Ctrl',
bindToController: true,
link: function ($scope, element, attrs, parCtrl) {
$scope.parCtrl= parCtrl;
},
controller: ['$scope', function ($scope) {
ch1Ctrl= this;
ch1Ctrl.title = "CHILD 1 TITLE";
}]}
親ディレクトリ html:
<child1> </child1>
子 1 html:
{{parCtrl.title}}
{{ch1Ctrl.title}}
最後に、私の ParentDirective は次のように初期化されます。
<div ng-animate-swap="trigger" class="swapclass">
<parent-dir></parent-dir>
</div>
特定のケースでスライドするには、親ディレクティブのテンプレート全体が必要です。これを必要としない他の場所でもディレクティブを使用し、そのまま使用できます。スライド アニメーションが必要な場合は、上記のように ng-animate-swap 内に配置します。問題は、スワップ トリガーが変更されるたびに、新しい parCtrl が初期化され、すべてがリセットされることです。
スワップが発生するたびにコントローラーを再初期化せずに、isolate スコープと独自のコントローラーを持つディレクティブで animate swap を使用するにはどうすればよいですか?