Comment injecter '$modalInstance dans le cadre d'un contrôleur?
Dans mon application après j'ai découvert qu'un utilisateur n'est pas connecté je veux ouvrir une boîte de dialogue modale:
.when('/showtask/:id', {templateUrl: 'Home/Template/showtask', resolve: ShowTaskCtrl.resolve, access: { allowAnonymous: false },
resolve: {
userAuthenticated: ["$http", "$q", function ($http, $q) {
var deferred = $q.defer();
$http.get('/api/Authentication/UserAuthenticated').then(function (data) {
if (data.data != "null") {
deferred.resolve(data.data);
}
else {
var modalInstance = {
templateUrl: 'Home/Template/loginfailed',
controller: 'ModalInstanceCtrl',
modalpart: ['modalpart', function (modalpart) {
return modalInstance;
}]
};
$modal.open(modalInstance);
deferred.reject();
}
});
return deferred.promise;
}]
}
Depuis qu'il se passe sur la route à modifier je dois injecter un modalpart à l'intérieur d'une instance, et de la récupérer dans le contrôleur.
var ModalInstanceCtrl = WorkerApp.controller('ModalInstanceCtrl', ["$scope", "modalpart", function ($scope, modalpart) {
Mais je reçois cette erreur:
Inconnu fournisseur de: modalpartProvider <- modalpart
Comment puis-je résoudre ce problème?
P. S. code d'Origine qui je suis en train de regarder est ici: http://angular-ui.github.io/bootstrap/ (sous modal)
OriginalL'auteur Timsen | 2014-02-26
Vous devez vous connecter pour publier un commentaire.
Eu ce problème pendant un certain temps. Bien que vous ne publiez pas votre code HTML, c'est là mon problème. Assurez-vous que vous ne nommez pas le contrôleur sur votre DOM, ce qui a déjà été pris en charge pour vous à $modal.open().
OriginalL'auteur compguy24
Je n'ai jamais eu à utiliser le
$modal
service à l'intérieur d'un changement d'itinéraire vous aimez ce que vous faites, si vous ne savez pas comment cela va fonctionner. Cependant, tout en regardant votre$modal
code seul, il semble incorrecte. La manière correcte devrait être:Et puis votre contrôleur définition:
La
$modal
service gérer l'injection de$modalInstance
à votre contrôleur automatiquement, comme par le la documentation.Mais je ne comprends pas, si je lance la console.log($modalInstance) elle retourne un objet...
Je vous suggère de créer un minimum de jsfiddle/plunker montrant l'erreur. Pas mal sûr que ce sera corrigé ensuite.
Assurez-vous également que vous utilisez bien la dernière version 0.10.0 de angular-ui
Je vais avoir le même problème. Super frustrant. Il fonctionne très bien avec la syntaxe simple "var ModalInstanceCtrl = function ($champ, $modalInstance, articles) {" , mais j'essaye de code les choses de la Google moyen :s
OriginalL'auteur Beyers
J'ai le même problème, et j'ai trouvé que le contrôleur j'ai inscrit le lancer deux fois!
merci pour @compguy ,j'ai enlevé le nom du contrôleur dans le modèle .
Je Successd!
OriginalL'auteur rolin.tencent.Shenzhen