未知提供者:ngStorageProvider< - ngStorage尝试使用Angular ngStorage时

时间:2016-11-05 16:58:51

标签: javascript angularjs ng-storage

我在下面的代码中使用了ngStorage。 但是当我尝试运行时,这是我的角度应用程序的一部分,我将此错误发送到控制台:

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

为什么?

登录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);
            });
        }
    }]);

更新

更改了代码以包含控制器参数中的$ localStorage。现在错误消息已经消失了,但是当我将一个assigmnet放入它之后$ localStorage是未定义的......

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);
            });
        }

    }]);

这是我的代码抛出undefined localstorage错误的地方:

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
..........

}

1 个答案:

答案 0 :(得分:3)

您需要安装ngStorage,并将其添加到您的项目中。它不是角度核心的一部分。

如果已安装,则可能导致错误,因为您忘记在项目中添加脚本。

官方文档:https://github.com/gsklee/ngStorage

这是一个例子:How to use ngStorage in angularjs

更新

我看到比在控制器signupController中注入ngStorage(在字符串部分中)时注入应该是$ localStorage或$ sessionStorage。这导致了问题,因为ngStorage是一个模块,而不是提供者。

更新2

当您声明mainController时,第二个参数是您的控制器所依赖的模块,在那里,您忘记在$ localStorage的字符串之前添加jwtHelper的字符串。所以你的函数中有一个String少的变量。