AngularUI Modal Bootstrap événement Open
Je suis en invoquant un bootstrap de dialogue modale par le biais d'un lien.
Je veux démarrer une minuterie dans l'angle de contrôleur lorsque la boîte de dialogue pop-up. Comment puis-je détecter la boîte de dialogue ouvrir événement dans l'angle de contrôleur pour démarrer le compte à rebours?
Si j'ai démarrer la minuterie dans le champ d'application de ce genre,
app.controller('myctrl',
['$scope', '$window', '$timeout', 'svc',
function ($scope, $window, $timeout, svc) {
$scope.countdown = 10;
$scope.runCounter = function () {
$scope.countdown -= 1;
if ($scope.countdown > 0)
$timeout($scope.runCounter, 60000);
}
$scope.runCounter();
}]);
le chronomètre démarre lorsque l'application démarre. Je veux la minuterie pour commencer que lorsque la boîte de dialogue s'ouvre.
Merci.
OriginalL'auteur user2793135 | 2013-11-15
Vous devez vous connecter pour publier un commentaire.
Vérifier cette.
La
$modal.open()
retourne un objet qui, entre autres propriétés contient lesopened
promesse, pour être utilisé comme ci-dessus.Que faire si il n'est pas ouvert ? Il va donner des " TypeError: Cannot read property 'ouvert' undefined' ? Avez-vous une solution pour cela ?
Si il y a une chance que le modal ne s'ouvre pas, il suffit d'ajouter le
if( modalInstance )
avant la ligne.Yep.C'est tout.Déjà upvoted.Merci beaucoup mon ami 🙂
Utiliser le
rendered
événement plutôt que deopened
si vous avez besoin d'accéder au DOM à l'intérieur de la boîte de dialogue modale.OriginalL'auteur Nikos Paraskevopoulos
Je suppose que vous utilisez des modaux de http://angular-ui.github.io/bootstrap/.
Si vous regardez attentivement, vous verrez que le composant expose une promesse qui sera résolu lorsque le dialogue est ouvert. Qui est ce que vous aurez besoin d'utiliser. Vous pouvez faire quelque chose comme ça dans le contrôleur lorsque le modal est créé:
Voir le travail plunker ici
OriginalL'auteur Nicolas ABRIC