AngularJSの公式ドキュメントには、_$uibModalInstance.close
_がどのように機能するかを説明するものは含まれていません。次のコードフラグメントでは、_scope.close
_はモーダルウィンドウを閉じて呼び出し元コントローラーにオブジェクトを渡すために使用されるメソッドです
_var app = angular.module('myApp');
app.controller('ModalController', ['$uibModalInstance', modalControllerFn]);
function modalControllerFn($uibModalInstance) {
var scope = this;
// some data object
scope.data = {key1: "value1", key2: "value2"};
scope.close = function() {
$uibModalInstance.close(scope.data);
}
}
_
_$uibModalInstance.close
_(非リテラル値、つまり_scope.x
_)を使用してモーダルスコープに属するものを渡すことで、angularガベージコレクションがモーダルスコープ全体を破壊するのを防ぎますか?メモリリークを引き起こすシナリオ?
angular $uibModalInstance.close(data)
はどのように機能しますか?
JavaScriptの例をご覧くださいAngular UI BootstrapのWebサイト: Angular UI Bootstrap Modal
少し下にスクロールし、[JavaScript]タブをクリックしてコードを表示します。
重要な部分はこれです:
modalInstance.result.then(function (selectedItem) {
$scope.selected = selectedItem;
}, function () {
$log.info('Modal dismissed at: ' + new Date());
});
上記のselectedItem
変数は、次のものに渡されます。
$uibModalInstance.close(rightHereGetsPassedAsResult)
var modalInstance = $uibModal.open({template:tmpl, controller: ctrlr})
上記のコードでは、$ uibModal.open()は解決または拒否される約束を返します。
解決したら、ユーザーが「OK」ボタンをクリックすると、後で何かのように実行するステートメントがあるかもしれません。
modalInstance.result.then(function (data) { console.log('user clicked ok', data) })
モーダルインスタンスのコントローラーの$ scopeには、「OK」ボタンのngクリックとしての機能があります。
$scope.ok = function() { $uibModalInstance.close(data); }
$ scope関数で$ uibModalInstance.close(data)に渡すデータは、前述のステートメントのデータ結果として返されます。