2016-06-27 8 views
0

サービスを使用してコントローラ間でデータを共有する方法は分かっていますが、このケースは異なるので、質問を再考してください。同じコントローラのすべてのインスタンスを更新する方法

私はUIのためにこのようなものがあります。

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

NG-ビューInsideは、私はそれがこの機能を実行する「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になりたいようにdoesnのですユーザーがどのビューを表示していても通知が表示されます。

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; 

とでたCompletionStatusを更新:解決策は、(それが単純な文字列では動作しません。)このようなサービスでオブジェクト参照または配列を持つようにすることですコントローラは変数を直接このオブジェクトに設定します

self.buildCompletionMsg = BuildService.completionStatus; 

これは、すべてのページで変数{{buildCompletionMsg}}を更新します。

関連する問題