web-dev-qa-db-fra.com

AngularJS ReferenceError: $ window n'est pas défini

J'essaie de rediriger mes utilisateurs s'ils réussissent la validation de mon formulaire (vérification des noms d'utilisateur et des mots de passe par rapport aux valeurs de la base de données).

La validation fonctionne bien mais dans ma fonction .Success, la redirection ne semble pas fonctionner, elle produit l'erreur: 'ReferenceError: $ window n'est pas définie'.

Voici le code:

.success(function(data) {
    console.log(data);

        if (!data.success) {
            // if not successful, bind errors to error variables
            $scope.errorUserName = data.errors.userName;
            $scope.errorUserPassword = data.errors.userPassword;
        } else {
            // if successful, bind success message to message
            $scope.message = data.message;
            $window.location=('Twitter.com');       
    }
});

J'ai essayé de changer le chemin d'accès, mais rien ne semble fonctionner. Des idées?

Merci!

LazyTotoro

20
user3350593

$window doit être injecté.

Pour l'injecter, il vous suffit de l'ajouter en tant que paramètre à la fonction de votre contrôleur et Angular se chargera automatiquement du reste.

Par exemple:

app.controller('MyController', function MyController($scope, $window) {

    $window.location = 'http://stackoverflow.com'
});

Vous pouvez en savoir plus sur l'injection de dépendances dans AngularJS ici .

Si vous n'avez pas besoin de recharger une page complète, vous devez plutôt injecter et utiliser $ location :

// get the current path
$location.path();

// change the path
$location.path('/newValue');
45
tasseKATT