2 votes

En utilisant $location.path() pour la redirection dans Firebase

Je veux rediriger vers une page différente après la soumission réussie du formulaire dans angularjs en utilisant firebase. J'utilise push() pour pousser les données dans la base de données de firebase. Voici l'implémentation de mon contrôleur -

.controller('AddPostCtrl',['$scope','$location',function($scope,$location){

$scope.AddPost=function(event){
    var firebaseObj=new Firebase("https://boiling-inferno-5476.firebaseio.com/Article");
    event.preventDefault();
    var title=$scope.article.title;
    var post=$scope.article.post;
        firebaseObj.push({
        title:title,
        post:post
    },function(error){
        if(error)
        {
            console.log(error);
        }
        else
        {
            $location.path('/welcome');
        }
    })

}
}])

En cliquant sur le bouton de soumission du formulaire, la page doit être redirigée vers la page 'welcome', mais je dois cliquer deux fois pour le faire. Y a-t-il une erreur dans mon implémentation.

2voto

Alec Kravets Points 2535

Essayez ceci:

$scope.$apply(function() {
    $location.path('/welcome');
});

Le service $location utilise la phase $digest pour démarrer le changement de route. C'est pourquoi vous devez utiliser la fonction $apply lorsque le service $location est utilisé en dehors du cycle de vie de la portée. Et c'est pourquoi votre deuxième clic a appliqué le changement de route dès le premier clic.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X