La documentation officielle d'AngularJS ne contient aucun élément décrivant le fonctionnement de $uibModalInstance.close
. Dans le fragment de code suivant, scope.close
est une méthode permettant de fermer la fenêtre modale et de transmettre un objet au contrôleur de l'appelant.
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);
}
}
Le fait de transmettre quelque chose appartenant à la portée modale à l'aide de $uibModalInstance.close
(valeur non littérale, c'est-à-dire: scope.x
) empêche-t-il le ramassage de déchets angulaire de détruire la totalité de la portée modale? est-ce un scénario pour causer des fuites de mémoire?
Comment fonctionne exactement $uibModalInstance.close(data)
angulaire?
Veuillez regarder l'exemple JavaScript sur le site web de Angular UI Bootstrap ici: Angular UI Bootstrap Modal
Faites défiler juste un peu et cliquez sur l'onglet JavaScript pour voir le code.
La partie importante est la suivante:
modalInstance.result.then(function (selectedItem) {
$scope.selected = selectedItem;
}, function () {
$log.info('Modal dismissed at: ' + new Date());
});
Ci-dessus, la variable selectedItem
correspond à ce qui est passé dans:
$uibModalInstance.close(rightHereGetsPassedAsResult)