【问题标题】:how to inject $cookie in custom service of angularjs?如何在angularjs的自定义服务中注入$cookie?
【发布时间】:2017-03-07 14:25:44
【问题描述】:
我正在使用 angularjs,根据它的documentation,我最常使用带有 ngCookies 的 cookie。我用这个结构添加了 ngCookie:
- 将 angular.js 和 angular-cookies.min.js 添加到我的 index.html 中
-
使用此代码将 ngCookie 注入我的应用程序:
var app = angular.module('test',
['ngRoute','ngAnimate','ngFileUpload','ngSanitize','ngCookies']);
-
现在我将 ng-cookie 注入到我自己的服务中:
app.service("transactionService",
["$cookie", "$http","sessionStorageService",
function($cookie, $http, sessionStorageService){
$cookies.put("unique_code",123456);
console.log(sessionStorageService.getCurrentUser().sessionid);
console.log($cookies.get("unique_code"));
return;
}
]);
但我收到此错误:
错误:[$injector:unpr]
我哪里错了?
【问题讨论】:
标签:
javascript
angularjs
cookies
【解决方案1】:
服务的名称是 $cookies 而不是 $cookie。
在开发使用完整版(未缩小版)的 angular 时的旁注,它提供了更好的错误代码。 Error: $injector:unpr 已记录在案并广为人知:
此错误是由于 $injector 无法解析
需要的依赖。要解决此问题,请确保定义了依赖项
并且拼写正确。
【解决方案2】:
你拼错了$cookies
["$cookie", "$http","sessionStorageService",
^
function($cookie, $http, sessionStorageService){
Error: $injector:unpr => “未知的提供者错误”
查看injector:unpr error
还有 $cookies 文档here
【解决方案3】:
如果你使用旧的 Angular 版本,那么你应该使用 $cookieStore 而不是 $cookie
app.service("transactionService",[
"$cookieStore","$http","sessionStorageService",
function($cookieStore, $http, sessionStorageService){
$cookieStore.put("unique_code",123456);
console.log(sessionStorageService.getCurrentUser().sessionid);
console.log($cookieStore.get("unique_code"));
return;
}]);
【解决方案4】:
我终于找到了我的错,这真的很简单和愚蠢......
我的 Angular js 版本是 1.3.0,但我从 Angular 版本 1.4.4 获取 cookie :(