Ich habe eine Direktive (ParentDir) erstellt, die einen eigenen Controller hat und deren Template an diesen Controller bindet. Es kommuniziert mit einer anderen Direktive (Child1), die über einen eigenen Controller verfügt, der die erste Parent-Direktive "benötigt". Im Folgenden ist ein vereinfachtes Beispiel:Direktive mit eigenem Controller innerhalb von ngAnimateSwap führt dazu, dass ein neuer Controller bei jedem 'swap' initialisiert wird
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";
}]}
ParentDir html:
<child1> </child1>
Child1 html:
{{parCtrl.title}}
{{ch1Ctrl.title}}
Schließlich mein ParentDirective ist in etwa wie folgt initialisiert:
<div ng-animate-swap="trigger" class="swapclass">
<parent-dir></parent-dir>
</div>
ich brauche T Die Vorlage der gesamten übergeordneten Richtlinie wird in bestimmten Fällen verschoben. Ich benutze die Direktive auch an anderen Orten, an denen ich das nicht brauche und ich kann sie so verwenden wie sie ist. In den Fällen, in denen ich die Folienanimation brauche, platziere ich sie wie oben gezeigt in einem ng-animate-swap. Das Problem ist, dass jedes Mal, wenn sich der Auslagerungstrigger ändert, ein neuer parCtrl initialisiert wird, was bewirkt, dass alles zurückgesetzt wird!
Wie kann ich Animate Swap mit einer Direktive verwenden, die einen isolierenden Bereich und einen eigenen Controller hat, ohne den Controller jedes Mal neu zu initialisieren, wenn ein Austausch stattfindet?
Der animierte Austausch ist sehr nützlich, weil ich ein aktualisiertes übergeordnetes Verzeichnis-DOM mit aktualisierten Daten einfach "einschieben" kann. Gibt es eine andere Möglichkeit, das zu animieren? Ein vereinfachtes Beispiel ist genau das Beispiel aus den eckigen Dokumenten: https://docs.angularjs.org/api/ngAnimate/directive/ngAnimateSwap. Die Anzahl ändert sich, aber sie kann es "einschieben". –