2014-09-20 2 views
1

동적 라우팅을 사용하여 모달 창을로드하는 응용 프로그램이 있습니다. 각 창에는 JSON 파일의 "활동"개체가 하나씩 표시됩니다. 현재 경로를 사용하여 표시되는 카드를 확인한 다음 경로 이름과 일치하는 데이터를 채우기 위해 데이터 서비스를 호출합니다.

하지만 현재의 카드를 배열 컨텍스트에서 분리하므로이 솔루션이 마음에 들지 않습니다. 필자는 템플릿에서 카드 객체를 전달하는 것이 훨씬 더 좋을 것입니다. 그 이유는 $ 인덱스가 무엇인지 알게 될 것이기 때문입니다. 그런 다음 "prev"및 "next"요소로 이동하는 데 사용할 수 있습니다.

$routeProvider 
    .when('/page/:name', { 
     templateUrl : 'modalContainer', 
     controller : 'ModalContainerCtrl' 
    }) 

이 컨트롤러를 제공합니다 :이 $의 routeProvider를 트리거

<div ng-controller="MenuCtrl"> 
    <ul class="menu"> 
    <li ng-repeat="card in cards"> 
    <a href="#/page/{{ card.shortName }}">{{ card.shortName }} </a> 
    </li> 
</ul> 
</div> 

:이 마크 업이있는 경우

.controller('ModalContainerCtrl',['$scope', '$modal', '$route', function($scope, $modal, $route) { 

var modalInstance = $modal.open({ 
    templateUrl : '../assets/templates/modal.html', 
    controller: 'ModalCtrl' 
}); 

$scope.activity = $route.current.pathParams.name; 
console.log($scope.activity); 

//Modal controls 
$scope.close = function() { 
    console.log("close!"); 
    $modalInstance.close(); 
}; 

}]) 

어떤 방법이 I card 개체를이 라우팅이나 다른 평균을 통해 ModalContainerCtrl에 전달할 수 있습니다. 에스?

+0

카드 객체가 ModalContainerCtrl의 범위 객체입니다

.controller('ModalContainerCtrl',['$scope', '$modal', '$route', function($scope, $modal, $route) { //your card object $scope.card = ''; var modalInstance = $modal.open({ templateUrl : '../assets/templates/modal.html', controller: 'ModalCtrl', resolve: { card: function() { return $scope.card; } } }); $scope.activity = $route.current.pathParams.name; console.log($scope.activity); //Modal controls $scope.close = function() { console.log("close!"); $modalInstance.close(); }; }]) 

및 모달 컨트롤러

? – V31

답변

1

해결할 수있는 resolve (resolve와 locals로 컨트롤러에 전달되는 resolve 회원의 정의, AngularJS route의 resolve 속성과 동일)를 사용하여 범위 객체를 모달 창 컨트롤러에 전달할 수 있습니다. 따라서 귀하의 경우에는 다음과 같이 수행 할 수 있습니다

var ModalCtrl = function ($scope, $modalInstance,card) { 
    //Modal controls 
    //card now can be used over here 
    $scope.close = function() { 
     console.log("close!") //This will now run 
     modalInstance.close(); 
    }; 
} 
+0

실제로 카드는 별도의 범위 인 MenuCtrl의 변수 인 배열 카드의 요소입니다. 경로가 발생할 때 MenuCtrl에서 ModalContainerCtrl로 전달해야합니다. – Ila

+0

당신은 서비스를 사용하고 그곳에서 방송 된 서비스를 사용할 필요가 있습니다. – V31

관련 문제