2016-06-27 4 views
0

서비스를 사용하는 컨트롤러간에 데이터를 공유하는 방법을 알고 있지만이 경우는 다릅니다. 따라서 질문을 다시 생각해보십시오.같은 컨트롤러의 모든 인스턴스를 업데이트하는 방법

나는 UI에 대해이 같은 있습니다.

<jsp:include page="../home/Header.jsp" /> 
<div data-ng-view></div> 
<jsp:include page="../home/Footer.jsp" /> 

NG-내부보기, 나는 그것은이 기능을 실행 "Ctrl 키와 같은"데이터 NG 컨트롤러 = "BuildController 사용하여 컨트롤러 인스턴스를 인스턴스화 즉, 사용자가 답변을 완료 한 후, buildCompletionMsg가 업데이트됩니다. 2 시간 소요하고 완료있어 말을 상자를 팝업 수 있습니다.

self.buildServers = function(servers, version) { 
     BuildService.buildList(servers, version).then(
      function(data) { 
       self.buildCompletionMsg = data; 
       $('#confirmationModal').modal('show'); 
      }, 
      function(errResponse) { 
       console.error("Error getting servers." + errResponse); 
      } 
     ); 
    }; 

문제는 내가 모달 그래서 아무튼 파일 header.jsp를이어야 할 것입니다 사용자가 어떤 뷰에 있는지 알면 알림이 표시됩니다.

self.buildCompletionMsg = BuildService.getCompletionMsg(); 
: header.jsp를에 erefore 내가 뭔가를 할 경우에도, "Ctrl 키로"데이터 NG 컨트롤러 = "BuildController을 사용하여 다른 컨트롤러 인스턴스를 가지고 당신이 볼 수 있듯이

<div data-ng-controller="BuildController as ctrl"> 
    <div class="modal fade" id="confirmationModal" role="dialog" aria-labelledby="confirmLabel"> 
    <div class="modal-dialog modal-lg" role="document"> 
     <div class="modal-content"> 
      <div class="modal-body"> 
       <h3>{{ ctrl.buildCompletionMsg }}</h3> 
      </div>   
     </div> 
    </div> 
    </div> 
</div> 

를 사용하여 바인딩

ng-view 페이지의 ctrl 인스턴스 만 업데이트하고 Header.jsp 내의 하나는 여전히 null입니다.

다른 페이지에서 BuildController의 모든 인스턴스를 업데이트하거나 Header.jsp 파일에서 BuildController 인스턴스를 업데이트하는 방법은 무엇입니까?

답변

0

나는 내 자신의 질문에 대한 답을 찾았습니다.

angular.module('buildModule').factory('BuildService', ['$http', '$q', function($http, $q) { 

    var self = {}; 
    self.completionStatus = { data: "" }; 

다음 $에 http 성공에

self.status.data = response.data; 

과의 완료 상태를 업데이트 :이 솔루션은 (그것이 단순한 문자열이 작동하지 않습니다)이 같은 서비스 객체 참조 또는 배열을 가지고하는 것입니다 컨트롤러가이 객체에 직접 설정됩니다.

이렇게하면 모든 페이지에서 {{buildCompletionMsg}} 변수가 업데이트됩니다.

관련 문제