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

时间:2016-01-11 13:22:37

标签: javascript angularjs cookies

我正在使用angularjs并根据其documentation我最常使用带有ngCookies的cookie。我添加了这个结构的ngCookie:

  1. 将angular.js和angular-cookies.min.js添加到我的index.html
  2. 使用以下代码将ngCookie注入我的应用程序:

    var app = angular.module('test',
    ['ngRoute','ngAnimate','ngFileUpload','ngSanitize','ngCookies']);
    
  3. 现在我将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;
        }
    ]);
    
  4. 但我收到此错误:     错误:[$ injector:unpr]

    我错在哪里?

4 个答案:

答案 0 :(得分:4)

服务名称为 $cookies ,而非$cookie

开发使用完整版(未缩小)角度时的旁注,它提供了更好的错误代码。 Error: $injector:unpr已被记录并且众所周知:

  

此错误是因为$ injector无法解析a   必要的依赖。要解决此问题,请确保已定义依赖项   并且拼写正确

答案 1 :(得分:2)

您拼错了$cookies

     ["$cookie", "$http","sessionStorageService",
            ^
  function($cookie, $http, sessionStorageService){

Error: $injector:unpr => “未知提供商错误”

查看injector:unpr error

另外$ cookies文档here

答案 2 :(得分: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;
}]);

答案 3 :(得分:0)

我终于发现了我的错,这真的很简单愚蠢.... 我的角度js版本是1.3.0,但我从角度版本1.4.4获得cookie :(