2016-02-11 52 views
1

我有一個主控制器用於我的配置文件編輯頁面,用戶可以在其中通過模態窗口添加他們的教育。該模式有它自己的控制器。用戶可以添加儘可能多的教育項目,他們可以修改現有的教育項目。將數據傳遞給子控制器以插入或更新

現在爲我的問題。我希望模態控制器負責添加新項目並更新現有項目。不同的是,在更新時,控制器應該收到一個完全填充的education對象,它應該更新。我不知道如何將這個對象從主控制器傳遞給模態控制器。我已經看到了通過服務在控制器之間傳遞數據的一些方法,但這似乎太麻煩了,在這種情況下使用服務對我來說沒有任何意義。

我的主控制器創建情態動詞,像這樣:

vm.openEducation = function(){ 
    $modal.open({ 
     templateUrl: "some.html", 
     controller: "SomeController", 
     controllerAs: "vm", 
     size: 'lg' 
    }).result.then(function (education) { 
      vm.educations.push(education); 
     }); 
} 

那孩子控制器(目前只支持插入,因此空的init vm.education):

function SomeController($scope){ 
    var vm = this; 
    vm.education = {}; // or get from parent controller 

    vm.save = function() { 
     $scope.$close(vm.education); 
    }; 

    vm.close = function() { 
     $scope.$dismiss(); 
    } 

    return vm; 
} 

回答

2

您可以使用$rootScope.$broadcast來從模態發送數據然後$scope.$on在其他地方接收數據。

例如:

// in your modal 
$rootScope.$broadcast('education:updated', yourDataObj) 

// in your controller 
$scope.$on('education:updated', function(e, data) { 
    console.log(data) 
}) 

注意,$broadcast會被任何在聽它拾起,所以如果你有多個控制器情況下,你會得到多個console.log消息

+0

有一些小的調整, ,那有效。謝謝。 –

相關問題