2014-09-19 127 views
1

我使用的UI的路由器$模式和我的設立就是這樣在我的路由頁:角訪問模式父控制器

.state('resourcesControl.resource.dataStuff', { 
     url: "/:resourceId/dataStuff", 
     onEnter: ['$stateParams', '$state', '$modal', '$timeout', 'resourceService', function($stateParams, $state, $modal, $timeout, resourceService){ 

      var modalInst = $modal.open({ 
       templateUrl: "templates/dataStuff.html", 
       windowClass: 'data-modal', 
       controller: 'dataStuffCtrl' 
      }); 

      modalInst.result.then(function(){ 

      }, function(){ 
       $state.go('resourcesControl.resource'); 
      }); 
     }] 
    }) 

我與UI路由器的理解是,所有的子狀態訪問給他們的父母控制器和範圍變量。理論上講,我的dataStuffCtrl應該可以訪問資源和resourcesControl控制器及其範圍。

但是,當我在dataStuff視圖的父級作用域項目周圍捲曲括號時,不會呈現任何內容。有沒有解決的辦法?我記得看到其他人用$ modal發佈關於父控制器的消息,但我無法在SO atm上找到它們。

回答

1

問題在於$ modal服務將元素添加到文檔的末尾。所以它不在您的範圍層次結構中,而只是$ rootScope的一個子項。你有幾個選擇。

  1. 通過$ rootScope傳遞數據給模態控制器或廣播/發出事件(亂)
  2. 手動傳遞模式要作爲的modal.open選項的一部分使用範圍通過的範圍對象屬性。 (您可以撥打$scope.$new()手動創建子範圍)。
  3. 使用modal.open選項對象的resolve屬性將要注入的數據傳遞到模態控制器中,就像角路由解析一樣