javascript 和 angularjs 中的本地存储

Local Storage in javascript and angularjs

我使用

在 javasrcipt 的 index.js 文件中的本地存储中添加了一些数据
var account = {
            name: name,
            email: email
            };
            //converts to JSON string the Object Literal
account = JSON.stringify(account);
localStorage.setItem('Account', account);
console.log("cookies"+localStorage.getItem('Account'));

我的日志 return我的数据说 cookie{"name":"Chetan shah" , "email":"some email id"}

现在我想把这个项目拿到我的 controller.js 在 angularjs.I 已经用过 https://github.com/grevory/angular-local-storage 这个 link

我在控制器里面写了下面的代码

var classFinder= angular.module('classFinder',['onsen.directives', 'ngTouch','ngCookies','LocalStorageModule']);
classFinder.controller('courseController',['$scope', '$window', '$http', '$cookieStore','localStorageService',function($scope,$window,$http,$cookieStore,localStorageService){
var myaccount = localStorageService.get('Account');
console.log("cookiestore"+myaccount);

但是我的控制台 returncookiestore 为空

如何实现从index.js到controller.js的数据!!

我怀疑发生的事情是 localStorageService 除了 JSON 编码值之外还在做一些事情。查看来源 https://github.com/grevory/angular-local-storage/blob/master/src/angular-local-storage.js ,它似乎至少在键中添加了 ls 的前缀。

我会说您应该使用与获取值相同的界面来设置值,或者:

  • 直接在控制器中使用window.localStorage(我怀疑您可能还需要解码JSON):

    var classFinder= angular.module('classFinder',['onsen.directives', 'ngTouch','ngCookies','LocalStorageModule']);
    classFinder.controller('courseController',['$scope', '$window', '$http', '$cookieStore','localStorageService',function($scope,$window,$http,$cookieStore,localStorageService){
      var myaccount = $window.JSON.parse($window.localStorage.getItem('Account'));
      console.log("cookiestore" + myaccount);
    
  • 或使用 localStorageService 设置来自 index.js 的值。如果您需要访问应用程序的上下文,您可以通过 run 方法执行此操作:

    angular.module('classFinder').run(['localStorageService', function(localStorageService) {
      var account = {
        name: name,
        email: email
      };
      localStorageService.set('Account', account);
    });
    

    请注意,您必须 运行 在 之后 angular.module('classFinder', [....]) 所以 Angular 知道它正在访问一个已经创建的模块,而不是创建一个新的。 (有括号/没有括号 [ ] 作为模块的第二个参数会产生很大的不同)