コントローラとアンギュラブートストラップ$モード間のデータの共有
-
21-12-2019 - |
質問
Angular-Bootstrap $ Modalを使用しています。コントローラとモードの間でデータを共有する方法を理解しています。
コントローラ:
app.controller 'MainController', ($scope, $templateCache) ->
$scope.openModal = ->
modal = $modal.open(
template: $templateCache.get('modal.html')
controller: modalController
size: 'sm'
resolve:
repository: ->
$scope.repository
)
.
モーダル:
modalController = ($scope, $modalInstance, repository) ->
$scope.repository = repository
$scope.update = (other_repo) ->
$scope.repository = other_repo
$modalInstance.dismiss('cancel')
.
この時点でMainControllerからの$scope.repository
をモーダルから変化すると更新されますが、そうではありません。
私は何が足りないの?
ありがとう
解決
モーダルコントローラには、モーダルを開けたコントローラとは異なるスコープがあります。閉じると、ドキュメント:
modal = $modal.open(...);
modal.result.then(function (otherRepo) {
$scope.repository = otherRepo;
}
. 他のヒント
コントローラのスコープを$ MODALに渡していない場合は、$ ROOTSCOPE:var modalScope = (modalOptions.scope || $rootScope).$new();
からプロトタイプ状に継承され、これからOpenerのコントローラスコープへの接続はありません。
しかし、それを開くコントローラのモーダルスコープに渡すことができます:
$scope.open = function (size) {
var modalInstance = $modal.open({
templateUrl: 'myModalContent.html',
controller: ModalInstanceCtrl,
size: size,
scope: $scope
});
.
今回は、ModalInstanceCtrl
のスコープは親コントローラの範囲を継承し、すべての変更はOpener Controllerのスコープに反映されます。
このプランクを見る(Bootstrap-UIからわずかに変更されたサンプル)
Opener Scopeからのselected
オブジェクトModalで更新され、この更新プログラムはModalDemoCtrl
コントローラのビューで直ちに反映されています。
所属していません StackOverflow