2014-01-13 6 views
5

나는 각진 프로젝트가 수행 한 방식에 전적으로 근거하여, 파일의 크기와 복잡성으로 인해 응용 프로그램을 개별 파일로 분리하기 시작했습니다.AngularJS Controller가 구축 된 후 인스턴스를 가져 오는 방법은 무엇입니까?

이 리팩터링을하는 동안 원래 컨트롤러가 구성된 방식으로 문제가 발생했습니다. 그 중 일부는 모달 대화 상자에 삽입 될 인스턴스를 인스턴스로 만듭니다.

var firstInstanceCtrl = ['$scope', function($scope) { code... } ]; 

var secondInstanceCtrl = ['$scope', function($scope) { code... } ]; 

내 '주'컨트롤러에이 방법

$scope.buttonClick = function (row) { 

    var viewModel = {}; 

    var modalInstance = $modal.open({ 
     backdrop: 'static', 
     windowClass: 'modal-wide', 
     templateUrl: 'modalFirst.html', 
     controller: firstInstanceCtrl, 
     resolve: { 
      viewModel: function() { 
       return viewModel; 
      } 
     } 
    }); 

    modalInstance.result.then(function() {}, function() { }); 
}; 

하지만, 컨트롤러는 현재 등록 된 방법을 사용, 내가 어떻게 인스턴스를 예를 들면 얻을 수있는 방법이 표시되지 않습니다

angular.module('myApp.controllers', []). 
controller('firstInstanceCtrl', [function() { 

}]) 
.controller('secondInstanceCtrl', [function() { 

}]); 

제 질문은 "내 주 컨트롤러의 하위 컨트롤러 인스턴스를 어떻게 구합니까?"입니다.

controller: 'firstInstanceCtrl', 

$modal.open 내부적 $controller를 사용

+1

'$ modal.open'에서'controller : 'firstInstanceCtrl'' 문자열 버전을 사용하십시오. –

+0

http://jsfiddle.net/provegard/DUrgx/8/ 예를 들어 – SoluableNonagon

+3

을 참조하십시오. 또한 $ 컨트롤러 서비스가 도움이 될 수 있습니다. http://docs.angularjs.org/api/ng.$controller – SoluableNonagon

답변

6

당신은 컨트롤러의 등록에 사용 된 이름을 사용할 수 있습니다.

+0

돌 하나 두 마리 .. 감사합니다. –

관련 문제