javascript和angularjs中的本地存储

时间:2015-03-01 12:43:47

标签: angularjs local-storage

我已经使用

在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'));

我的日志返回给我的数据说饼干{"姓名":" Chetan shah" ,"电子邮件":"一些电子邮件ID"}

现在我想把这个项目交给我的controller.js在angularjs.I使用了https://github.com/grevory/angular-local-storage这个链接

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

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);

但我的控制台返回cookiestore null

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

1 个答案:

答案 0 :(得分:3)

我怀疑发生的事情是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知道它访问已创建的模块,而不是创建新模块。 (括号/没有括号[]作为模块的第二个参数会产生差异)