Comment fermer Angular-ui modale à partir d'autres contrôleur de
Je suis en utilisant Angulaire de l'interface utilisateur de la pop modale avec une forme en elle. Mon code est:
app.controller('NewCaseModalCtrl', ['$http', '$scope','$modal', function ($http, $scope, $modal, $log) {
$scope.items = ['item1', 'item2', 'item3'];
$scope.open = function (size) {
var modalInstance = $modal.open({
templateUrl: 'modal-new-case.html',
controller: 'ModalInstanceCtrl',
size: size,
resolve: {
items: function () {
return $scope.items;
}
}
});
modalInstance.result.then(function (selectedItem) {
$scope.selected = selectedItem;
}, function () {
});
};
}]);
Et puis j'ai un autre contrôleur qui est à l'intérieur de la modal-new-case.html modèle, et je le veux pour exécuter une httpd demande et alors fermer cette modal, c'est ici que code:
app.controller('CreateCaseFormCtrl', ['$http','$scope', function($http,$scope) {
$scope.formData = {};
$scope.processForm = function() {
$http.post('http://api.com/proj', $scope.formData).
success(function(data, status, headers, config) {
console.log("success " + data.id);
}).
error(function(data, status, headers, config) {
console.log("Error " + status + data);
});
};
}]);
Ok, donc, à l'intérieur de mon modal-new-case.html modèle, qui est chargé lorsque je fais:
ng-controller="NewCaseModalCtrl"
J'ai ce code HTML:
<div ng-controller="CreateCaseFormCtrl">
<form ng-submit="processForm()">
<button class="btn btn-primary" ng-click="processForm()" >OK</button>
<button class="btn" ng-click="cancel()">Cancel</button>
</form>
</div>
Donc, si vous voyez ce que je veux vraiment faire est de courir que processForm() de la fonction, et quand elle revient avec un succès, je veux, PUIS appeler la fonction qui va fermer la modale, qui, je crois, "annuler()" serait bien.
Mais je ne sais pas comment le consulter à partir de la CreateCaseFormCtrl contrôleur.
J'apprécie toutes les pensées et de les aider, et je tiens à ajouter que je suis très simples quand il s'agit de Anguleuses, donc si c'est compliqué, rappelez-vous que peut-être je ne suis pas 100% clair sur ce que chaque chose dans Angulaire est comme les usines et autres. Je suppose que je suis en train de dire que je suis très heureux avec un sale solution est assez simple, puisque cela ne va pas être long terme de la production de code de programmation.
- Est-ce que votre html
modal-new-case.html
commencer avec<div ng-controller="CreateCaseFormCtrl">
? si oui, pourquoi ne pas vous venez de fournir modal contrôleurCreateCaseFormCtrl
et injecter$modalInstance
et l'utilisation de sonclose(data)
méthode.
Vous devez vous connecter pour publier un commentaire.
Étape 1: supprimer la
de
Étape 2: Changement
dans
Étape 3: Dans CreateCaseFormCtrl ajouter un service appelé $modalInstance
Étape 4: Ajouter de la fermer et ok fonctions
et $modalInstance.close(); dans
utiliser $modalInstance.rejeter API
dans NewCaseModalCtrl:
close(data)
, sinon ça ne résout pas la promesse que l'OP a enchaîné par le contrôleur de parentmodalInstance.result.then
. Si vous utilisez le rejeter ira à bloc catch et vous dire queCreateCaseFormCtrl
?Vous un de le faire à l'échelle mondiale comme celui-ci ou d'autres contrôleurs: