2016-02-12 50 views

回答

2

這是關於控制器之間通信的一個相當常見的問題,因爲您不想關閉模型並想將數據傳遞到不同的控制器。

問題的最快途徑是使用$broadcast。在你的模態的控制,這樣寫:

// Make sure to use $rootScope 
$rootScope.$broadcast("modalDataEventFoo", {selectedItem: $scope.selected.item}); 

現在,在父控制器:

$scope.$on("modalDataEventFoo", function(data) { 
    console.log("got the data from modal", data.selectedItem); 
}); 

通信其他參考資料控制器之間:

  1. What's the correct way to communicate between controllers in AngularJS?
  2. https://egghead.io/lessons/angularjs-sharing-data-between-controllers
  3. http://www.angulartutorial.net/2014/03/communicate-with-controllers-in-angular.html
  4. Communication between controllers in Angular
+0

請注意,傳遞給偵聽器函數的參數是:(事件,數據),而不僅僅是(數據),如上例所示。 –

1

另一種方式是份額父控制器和模態控制器宣佈在選項scope屬性之間的範圍

var modalInstance = $uibModal.open({ 
    animation: $scope.animationsEnabled, 
    templateUrl: 'myModalContent.html', 
    controller: 'ModalInstanceCtrl', 
    size: size, 
    scope: $scope, 
    resolve: { 
    items: function() { 
     return $scope.items; 
    } 
    } 
}); 

入住這plunker在模態包含綁定到變量的輸入元素$scope.shared.namehttp://plnkr.co/edit/4xiEXATxAnvDKBSXxzQd

相關問題