2014-11-04 94 views
1

我有一個控制器名爲「contractController」如何調用從模型控制器父類的方法

contractController包含方法保存()

contractController打開與控制器的一個示範窗口命名爲「PopUpcontroller

from PopUpcontroller i想打電話保存方法contractController

試圖調用像$parent保存方法,但沒有任何工作。

請指教。

回答

1

如果您使用的角度引導用戶界面(http://angular-ui.github.io/bootstrap/),然後,使用的當您調用$ modal.open()時,請使用「resolve」屬性。

無論您添加什麼解決方案,如果您將其作爲依賴項注入進行掛接,都將可用。

在他們頁面上的例子中,「item」可用於下面,因爲它被連接在「resolve」中。

解析:

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

用途:

angular.module('ui.bootstrap.demo').controller('ModalInstanceCtrl', function ($scope, $modalInstance, items) { 
1

如果兩個控制器嵌套使:

<div ng-controller="contractController"> 
    <div ng-controller="PopUpcontroller"> 
    </div> 
</Div> 

你可以在popUpController調用$ scope.save(),它會自動上升到找到與該方法的父(直到$ rootScope )。

,如果他們沒有嵌套,你應該使用的服務,以便執行控制器

1

你需要確保,如果你想保留它的原型彈出從contractController的範圍內創建之間的溝通。你如何創建彈出窗口?

像這樣的事情在角UI自舉(我不使用它,但API應該接受它):

$modal.open({ 
    scope: $scope, 
    /* ... other opts */ 
}); 
+0

功能PopUpcontroller($範圍,$ rootScope,$模式,認證介紹,contractService){ ... PopUpcontroller $注入= [」 $ scope','$ rootScope','$ modal','authen','contractService']; – nidhin 2014-11-04 11:29:13

+0

看起來你使用的是Angular UI Bootstrap的'$ modal',對嗎?您需要將您的控制器的範圍傳遞到其「範圍」選項。 – 2014-11-04 11:36:31

相關問題