web-dev-qa-db-fra.com

Comment fonctionne angular "$ uibModalInstance.close (data)"?

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);
    }
}

Question 1)

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?

Question 2)

Comment fonctionne exactement $uibModalInstance.close(data) angulaire?

15
Abdo Adel

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)
6
agenaille