我正在使用controllerAs語法來避免在我的控制器中使用$ scope湯,並且還使用ui.bootstrap來呈現模態視圖。使用controllerAs語法時,將當前範圍傳遞給modalInstance
我需要打開一個與當前控制器共享相同範圍的modalInstace。在注入範圍,你也許可以這樣做:
var modalInstance = $uibModal.open({
templateUrl: 'addEditModal.html',
scope: $scope
});
然而,由於我沒有注射範圍,並使用controllerAs語法,這是行不通的。
從我發現的情況來看,您需要使用resolve來傳遞數據,但是您必須通過函數明確地傳遞它。有沒有辦法通過整個範圍?
有一堆東西我需要做的模式和傳遞大量的數據似乎矯枉過正。
不想這樣做,因爲它似乎凌亂...
var modalInstance = $modal.open({
templateUrl: 'myModalContent.html',
controller: 'ModalInstanceCtrl',
resolve: {
user: function() {
return vm.user;
},
something: function() {
return vm.something;
},
blah: function() {
return blah;
}
}
});
更好的想法?
該解決方案需要將$ scope注入到控制器。這是我們試圖避免的。 – Bendim
@Bendim如答案中所述,它不注入作用域,但指定模態控制器的父作用域。它可以是控制器的'$ scope'或'scope = $ rootScope。$ new()'作用域。 '$ uibModal'的設計就是這樣工作的。誰是'我們'?如果您有類似問題,請隨時發佈反映您特定情況的問題。 – estus
這似乎是答案的一半。然後你必須將$ scope注入到你的模態控制器中,那麼你可以訪問父scope變量作爲$ scope.controllerasname.variable – nuander