我下面有使用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);
            });
        }

    }]);


这是我的代码抛出未定义的本地存储错误的地方:

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

}

最佳答案

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

如果已经安装了该脚本,则可能是由于忘记了在项目中添加脚本而引起的错误。

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

下面是一个示例:How to use ngStorage in angularjs

更新:

我看到的是,在控制器signupController中,当注入应该是$ localStorage或$ sessionStorage时,您正在注入ngStorage(在字符串部分)。这是由于ngStorage是模块而不是提供程序导致的。

更新2:

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

07-24 09:47
查看更多