未知提供者:ngStorageProvider <- ngStorage 尝试使用时 Angular ngStorage
Unknown provider: ngStorageProvider <- ngStorage when trying to use Angular ngStorage
下面这段代码使用了 ngStorage。
但是当我尝试 运行 这是我的 angular 应用程序的一部分时,我在控制台收到此错误:
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。现在错误消息消失了,但是在我对它进行赋值后 $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,并将其添加到您的项目中。它不是 angular 核心的一部分。
如果您已经安装了,可能是因为您忘记在项目中添加脚本导致的。
这里是官方文档:https://github.com/gsklee/ngStorage
举个例子:
更新:
我看到你在控制器 signupController 中注入了 ngStorage(在字符串部分),而注入应该是 $localStorage 或 $sessionStorage。这是导致问题的原因,因为 ngStorage 是一个模块,而不是提供程序。
更新 2:
当你声明 mainController 时,第二个参数是你的控制器所依赖的模块,在那里,你忘记在 $localStorage 的字符串之前添加 jwtHelper 的字符串。因此函数中的变量少了一个字符串。
下面这段代码使用了 ngStorage。 但是当我尝试 运行 这是我的 angular 应用程序的一部分时,我在控制台收到此错误:
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。现在错误消息消失了,但是在我对它进行赋值后 $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,并将其添加到您的项目中。它不是 angular 核心的一部分。
如果您已经安装了,可能是因为您忘记在项目中添加脚本导致的。
这里是官方文档:https://github.com/gsklee/ngStorage
举个例子:
更新:
我看到你在控制器 signupController 中注入了 ngStorage(在字符串部分),而注入应该是 $localStorage 或 $sessionStorage。这是导致问题的原因,因为 ngStorage 是一个模块,而不是提供程序。
更新 2:
当你声明 mainController 时,第二个参数是你的控制器所依赖的模块,在那里,你忘记在 $localStorage 的字符串之前添加 jwtHelper 的字符串。因此函数中的变量少了一个字符串。