컨트롤러가 있고 컨트롤러가이 컨트롤러에 바인딩되는 지시문 (ParentDir)을 만들었습니다. 첫 번째 부모 지시문을 '요구'하는 자체 컨트롤러가있는 다른 지시문 (Child1)과 통신합니다.ngAnimateSwap에 자신의 컨트롤러가있는 지시문은 모든 '스왑'에서 새 컨트롤러가 초기화되도록합니다.
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>
자식 1의 HTML : 다음은 간단한 예입니다
마지막으로 내 ParentDirective은 이런 식으로 초기화{{parCtrl.title}}
{{ch1Ctrl.title}}
:
<div ng-animate-swap="trigger" class="swapclass">
<parent-dir></parent-dir>
</div>
내가 필요해. 그는 전체 부모 지시어의 템플릿을 슬라이드 할 수 있습니다. 나는 또한 내가 필요로하지 않는 다른 장소에서 지시어를 사용하며 그대로 사용할 수있다. 슬라이드 애니메이션이 필요한 경우 위와 같이 ng-animate-swap 안에 배치합니다. 문제는 스왑 트리거가 변경 될 때마다 새로운 parCtrl이 초기화되어 모든 것이 재설정되도록하는 것입니다.
스왑이 발생할 때마다 컨트롤러를 다시 초기화하지 않고도 범위를 분리하고 자체 컨트롤러가있는 지시문을 사용하여 애니메이션 스왑을 어떻게 사용할 수 있습니까?
업데이트 된 데이터가있는 업데이트 된 상위 디렉토리 DOM에 '손쉽게'삽입 할 수 있기 때문에 애니메이션 스왑은 매우 유용합니다. 이 애니메이션을 만들 수있는 또 다른 방법이 있습니까? 단순화 된 예는 각도 문서의 예입니다 (https://docs.angularjs.org/api/ngAnimate/directive/ngAnimateSwap). 번호가 바뀌고 있지만 '슬라이드'할 수 있습니다. –