如何在 AngularJS 自定义服务中注入 $cookie?

3

我正在使用AngularJS,根据其文档,最好使用ngCookies处理cookies。 我使用以下结构添加ngCookie:

  1. add angular.js and angular-cookies.min.js to my index.html
  2. inject ngCookie to to my app using this code :

    var app = angular.module('test',
    ['ngRoute','ngAnimate','ngFileUpload','ngSanitize','ngCookies']);
    
  3. and now i inject ng-cookie to my own service :

    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] 我错在哪里了?
4个回答

4
服务的名称是 $cookies 而不是 $cookie
开发时请使用完整版本(而不是被压缩的版本),它提供了更好的错误代码。 Error: $injector:unpr 是有文档记录并且广为人知的错误:

这个错误是由于 $injector 无法解析所需的依赖关系而导致的。要修复此问题,请确保定义了该依赖项并且拼写正确


我纠正了我的打字错误...但是我仍然得到这个错误: http://errors.angularjs.org/1.3.0/$injector/unpr?p0=%24%24cookieReaderProvider%20%3C-%20%24ookieReader%20%3C-%20%24cookies%20%3C-%20transactionService - Navid_pdp11
@Navid_pdp11 请验证 angular-cookies.min.js 是否已正确加载,如果已加载,请尝试创建一个 fiddle 或 plunker 来展示问题。 - miensol

2
您拼写错误了$cookies
     ["$cookie", "$http","sessionStorageService",
            ^
  function($cookie, $http, sessionStorageService){

Error: $injector:unpr => "未知提供者错误"

请查看injector:unpr错误

此外,$cookies文档请参见此处


2

如果您使用旧版本的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;
}]);

0

我终于找到了我的错误,它非常简单和愚蠢...... 我的AngularJS版本是1.3.0,但我从Angular版本1.4.4获取cookie :(


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接