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

how to inject $cookie in custom service of angularjs?

本文关键字:注入 cookie 服务 自定义 angularjs      更新时间:2023-09-26

我使用angularjs,根据其文档,我大多数使用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;
        }
    ]);
    

但我得到了这个错误:错误:[$injector:unp]

我哪里错了?

服务的名称是$cookies而不是$cookie

注意,当开发使用完整版本(未缩小)的角度时,它提供了更好的错误代码。Error: $injector:unpr有文件记载,并且众所周知:

此错误是由于$injector无法解决必需的依赖关系。要解决此问题,请确保定义了依赖项并且拼写正确

您拼错了$cookies

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

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

检查注射器:无错误

此处还有$cookies文档

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

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