2014-01-08 173 views
0

我知道這個問題已被問了很多次,但我有一個不同的問題與控制器之間共享數據有關。angularjs:控制器之間共享數據(加載HTML)

的index.html

<div ng-controller="MainController"><div>LeftPanel</div> <div ng-include src="RitePanel"></div></div> 

在Leftpanel所有文件得到加載任何文件被點擊時,我改變RitePanel的價值,在 「RiteDiv」

switch (document.status) {    
     case 1://Draft 
      $scope.RitePanel= '/Scripts/app/home/templates/primary-right-panel/draft-panel.html'; 
      break; 
     case 2://Completed 
      $scope.RitePanel= '/Scripts/app/home/templates/primary-right-panel/completed-panel.html'; 
      break; 

sharingservice帶來了新的HTML。的setObject(document.id);

我創建控制器,每個HTML如draftcontroller的草案,html和completedcontroller已完成,HTML這些都是孩子控制器

我創建了一個共享服務共享頂部和子控制器之間的數據

adocsModule.factory('SharingService', function ($rootScope) { 

var service = { 
    setobject: function (object) { 
     $rootScope.$broadcast('docobject', object); 
    } 
}; 
return service;}); 

,並在孩子的控制器我做

adocsModule.controller('draftcontroller ', ['$scope', 'SharingService', function ($scope, sharingservice) { 
$scope.$on('docobject', function (event, clientDataObject) {   
    alert(clientDataObject); //i know its not recommended its just for testing purpose 
    console.log('pendingcontroller ' + clientDataObject); 
    $scope.test = clientDataObject; 
});}]); 

HTML:

<div ng-controller="draftcontroller "> <span>{{test}}</span></div> 

問題:

上的文件第一次點擊(LeftPanel)沒有得到提示,當我點擊它,我再次看到警告和(RitePanel)也改變HTML 我的感覺是它因爲首先點擊HTML沒有加載,可能是因爲那個孩子控制器不聽?

在頁面加載時加載的子控制器不會動態加載它們。只是被加載動態

任何幫助HTML可以理解的:)

回答

0

你能不能完成/編輯我plunker。我不明白SharingService服務的setobject()方法在哪裏被觸發。

plunker

+0

sory我的錯誤,它發生在主控制器。我已經編輯它在我的問題 – Salman

+0

我已經解決了它使用$超時我認爲這是因爲廣播發生在HTML加載之前發生 – Salman

相關問題