Angularjs mise à jour des données dans la portée parent après la soumission d'un formulaire modal
Je suis incapable de comprendre comment mettre à jour le $scope.dir de la portée parent (DirCrl) de l'enfant (ModalCtrl). La vue est un simple formulaire modal avec une seule saisie de texte. Sur soumettre la saisie de texte est lié à mkdir.nom de l'enfant. Le contrôleur enfant fait un appel RESTE à une base de données et doit mettre à jour $champ d'application.dir de la portée parent avec les données de réponse. Toute orientation sera grandement apprécié. L'extrait de Code ci-dessous
app.controller('DirCtrl', ['$scope', '$http', function ($scope, $http) {
$scope.dir = {};
$scope.mySelections = [];
$http({
method: 'GET',
url: '//localhost:9090/fx/v1/dir/52cdc7304c3525ac0c5cdd3a'
})
.success(function (data, status, headers, config) {
$scope.dir = data;
$scope.children = data.children;
})
.error(function (data, status, headers, config) {
});
}]);
var ModalCtrl = function ($scope, $modal, $log) {
$scope.mkdir = {
name: 'name',
data: {}
};
$scope.$parent.ben = 'ben01';
$scope.open = function () {
var modalInstance = $modal.open({
templateUrl: 'myModalContent.html',
backdrop: true,
windowClass: 'modal',
controller: ModalInstanceCtrl,
resolve: {
mkdir: function () {
return $scope.mkdir;
}
}
});
modalInstance.result.then(function () {
$scope.$parent.children = $scope.mkdir.data.children;
});
};
};
var ModalInstanceCtrl = function ($scope, $modalInstance, $http, $log, mkdir) {
$scope.mkdir = mkdir;
$scope.submit = function () {
$log.log('name of directory to create');
$log.log(mkdir.name);
$http({
method: 'GET',
url: '//localhost:9090/fx/v1/dir/52cdcce74c358cdfe2fa2c83'
})
.success(function (data, status, headers, config) {
$scope.mkdir.data = data;
})
.error(function (data, status, headers, config) {
});
$modalInstance.dismiss('cancel');
}
$scope.cancel = function () {
$modalInstance.dismiss('cancel');
};
};
OriginalL'auteur user3146617 | 2014-01-25
Vous devez vous connecter pour publier un commentaire.
CORRECTION:
À l'enfant de faire quelque chose comme:
Dans le parent de l'écouter pour cet événement:
OriginalL'auteur Khalil
À l'aide de la promesse (standard)
Le standard pour retourner des données à l'invocation de contrôleur une fois que le modal est fermé est à inscrire un rappel, une fois la promesse est résolu:
À l'aide d'événements
Vous pouvez également distribuer un événement vers le haut à travers le champ d'application de la hiérarchie, par l'évocation de $émettent:
La portée parent peut alors écouter l'événement en invoquant $sur:
Lors de la création d'un nouveau modal, c'est $champ d'application sera un enfant de l' $rootScope par défaut. Lorsque $emit() est appelée, elle regarde sur son propre champ d'application (c'est à dire le modal $champ) pour tous les écouteurs enregistrés, les appelle (si présent), puis traverse le champ d'application de la chaîne vers le haut jusqu'à ce qu'il ne manque de parents. Si le parent n'est pas spécifié lors de la création du modal, appelant $scope.$emit('eventName", les données) contournent le contrôleur du champ d'application lors de l'évaluation de la portée de la chaîne. À la fois l'invocation contrôleur et le modal contrôleur permet de travailler directement avec le $rootScope lors de l'appel de $emit() et $(), mais en général vous souhaitez associer une modale du champ d'application, c'est avec l'invocation du contrôleur $champ d'application de la hiérarchie. Pour définir la portée d'un parent le modal, définissez le paramètre d'étendue à $champ d'application comme suit:
OriginalL'auteur Derek Greer
Sonne comme vous voulez
$scope.$emit()
retour à la mère.À l'enfant de faire quelque chose comme:
Dans le parent de l'écouter pour cet événement:
Même problème. Avez-vous trouvé une solution ?
Je voudrais essayer les combinaisons de $rootScope.$émettre (pour aller jusqu'à la chaîne), $rootScope.$diffusion (pour aller vers le bas) ainsi que $scope.$émettre, $champ d'application.de la diffusion. Assurez-vous d'injecter $rootScope dans vos contrôleurs si vous l'utiliser. Je n'ai pas eu d'ennuis avec l'aide de $rootScope de cette façon.
désolé pour la réponse tardive, mais merci 🙂
OriginalL'auteur rg88
Utilisation de la promesse de l'interface que uibModal vous renvoie. Disons que vous avez un bouton SUPPRIMER dans la modale, et lorsque vous cliquez sur supprimer un élément à partir d'une liste qui est présentée dans la vue parent (parent):
MODAL CONTRÔLEUR
CONTRÔLEUR DE PARENT
OriginalL'auteur Pietro Coelho