我创建了一个指令(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 导致一切都被重置!
如何将动画交换与具有隔离范围和它自己的控制器的指令一起使用,而不在每次发生交换时重新初始化控制器?