0

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

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

为什么?

登录控制器.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。现在错误消息消失了,但是在我对其进行分配后 $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);
            });
        }

    }]);

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

主控制器.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
..........

}
4

1 回答 1

3

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

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

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

这里有一个例子:如何在 angularjs 中使用 ngStorage

更新

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

更新 2

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

于 2016-11-05T17:56:26.153 回答