2014-01-10 3 views
2

modalDialog라는 지시어를 만들었습니다. 이것은 기본적으로 모달 대화 상자입니다. 그것은 transclude을 사용하기 때문에 나중에 내 코드에서이 작업을 수행 할 수 있습니다지시어의 다른 인스턴스에 대해 지시어의 컨트롤러를 변경할 수 있습니까?

<div modal-dialog id="dialog" dialog-title="This is my Dialog"> 
    ... 
    here goes the content of the dialog 
</div> 

내가 내 응용 프로그램의 다른 장소에서이 지시어를 사용하려면, 다른 목적을 위해. 대화 상자의 내용은 당연히 다양 할 것이므로 대화 상자 제목이나 다른 매개 변수를 전달하는 것과 같은 방법으로 컨트롤러를 지시문에 전달하는 방법을 사용하는 것이 좋습니다.

div에 모달 대화 상자를 배치하고 제어기가 설정된 상태로 생각했습니다. 이와 같이 :

<div ng-controller="ThisInstanceController"> 
    <div modal-dialog id="dialog" dialog-title="This is my Dialog"> 
     ... 
     here goes the content of the dialog 
    </div> 
</div> 

그러나 나는 그것을별로 좋아하지 않습니다. 더 우아한 방법이 있습니까?

답변

0

Angular-UI 모달을 살펴보십시오. 그들은 모달을 사용하는 꽤 우아한 방법을 가지고 있습니다. 즉, 모달이 열릴 때 초기화 할 컨트롤러를 전달할 수 있습니다.

$scope.open = function() { 

    var modalInstance = $modal.open({ 
      templateUrl: 'myModalContent.html', 
      controller: ModalInstanceCtrl, 
      resolve: { 
       items: function() { 
        return $scope.items; 
       } 
      } 
     }); 

    modalInstance.result.then(function (selectedItem) { 
     $scope.selected = selectedItem; 
    }, function() { 
     $log('Modal dismissed at: ' + new Date()); 
    }); 
}; 

좋은 점은 컨트롤러간에 해결 된 데이터를 전달할 수 있다는 것입니다.

관련 문제