2016-11-05 1 views
0

J'ai ce code ci-dessous qui utilise ngStorage. mais quand je tente d'exécuter cela fait partie de mon application angulaire je reçois cette erreur à la console:Fournisseur inconnu: ngStorageProvider <- ngStorage lors de la tentative d'utilisation d'Angular ngStorage

Error: [$injector:unpr] Unknown provider: ngStorageProvider <- ngStorage <- signupController 

Pourquoi?

signe dans controller.js

var smallTalkzModel = angular.module('smallTalkzModel', ['ui.router', 'luegg.directives', 'ngCookies', 'ngStorage', 'angular-jwt']); 

smallTalkzModel.controller('signupController', ['$scope', '$location', '$http', 'userDetails','ngStorage', 
    function ($scope, $location, $http, userDetails,$localStorage) { 

     $scope.register_user = function (info) { 
      $http({ 
       url: '/register_user', 
       method: 'POST', 
       data: info 
      }).then(function (response) { 
       $localStorage.jwt = response.data.id_token; 
       $location.path('main'); 
      }, function (error) { 
       alert(error.data); 
      }); 
     } 
    }]); 

mise à jour:

changé le code pour inclure le localStoragein $ le contrôleur paramters. maintenant le Mesge d'erreur a disparu, mais le localStorage $ est indéfini après je fais une assigmnet en elle ...

controller('signupController', ['$scope', '$location', '$http', 'userDetails', '$localStorage', 
    function ($scope, $location, $http, userDetails, $localStorage) { 

     $scope.login_info = ""; 
     $scope.userDetails = userDetails.isLogged; 
     $scope.userLogin = false; 
     $http.get('/online_users') 
      .success(function (data) { 
       $scope.usersNumber = data.length; 
      }) 
      .error(function (data) { 
       console.log('Error: ' + data); 
      }); 

     $scope.register_user = function (info) { 
      $http({ 
       url: '/register_user', 
       method: 'POST', 
       data: info 
      }).then(function (response) { 
       $localStorage.jwt = response.data.id_token; 
       $location.path('main'); 
      }, function (error) { 
       alert(error.data); 
      }); 
     } 

    }]); 

c'est là mon code l'erreur de jeter localStorage non définie:

mainController.js

smallTalkzModel.controller('mainController', ['$scope', 'sessionInfo', '$location', '$http', 'userDetails','$localStorage', 
    function ($scope, sessionInfo, $location, $http, userDetails, jwtHelper,$localStorage) { 

     $scope.login_info = ""; 
     $scope.userLogin = userDetails.isLogged; 

     var jwt = $localStorage.jwt; // here $localStorage is undefined 
.......... 

} 

Répondre

2

Vous devez installer ngStorage et l'ajouter à votre projet. Cela ne fait pas partie du noyau angulaire.

Si vous l'avez déjà installé, l'erreur peut être due au fait que vous avez oublié d'ajouter le script dans votre projet.

Voici la documentation officielle: https://github.com/gsklee/ngStorage

Voici un exemple: How to use ngStorage in angularjs

MISE À JOUR:

Je vois que dans le contrôleur signupController vous injectez ngStorage (dans la partie de chaîne) lorsque la L'injection doit être $ localStorage ou $ sessionStorage. Cela cause le problème car ngStorage est un module, pas un fournisseur.

MISE À JOUR 2:

Lorsque vous déclarez le mainController, le second paramètre sont les modules que votre contrôleur dépend, là, vous avez oublié d'ajouter la chaîne pour jwtHelper, juste avant la chaîne pour $ localStorage . Il y a donc une chaîne de moins que les variables que vous avez dans votre fonction.

+0

pas sûr que c'est le problème. J'ai fait npm installer ngstorage --save, et j'ai ajouté le script cdn src à mon index.html – Matoy

+0

N'utilisez pas le cdn si vous l'avez installé, utilisez simplement le chemin local vers le fichier. – fiso

+0

@Matoy, vérifiez ma mise à jour, je pense qu'il y a la réponse. – fiso