如何在没有每次转换对象的情况下有效地将数据存储在Ionic本地存储中?

时间:2017-01-24 09:50:26

标签: javascript angularjs ionic-framework local-storage

每当我们需要存储一个对象时,我们需要做JSON.stringify

IonicAngularJS中有一种有效的方法吗?

我使用的代码是:

$window.localStorage[key] = value;

1 个答案:

答案 0 :(得分:2)

执行上述操作的最有效方法是创建factory然后访问它:

(function(){
    'use strict';

    var yourApp = angular.module('yourApp');

    yourApp.factory('$localStorage', ['$window', function($window) {
          return {
                store: function(key, value) {
                  $window.localStorage[key] = value;
                },
                get: function(key, defaultValue) {
                  return $window.localStorage[key] || defaultValue;
                },
                storeObject: function(key, value) {
                  $window.localStorage[key] = JSON.stringify(value);
                },
                getObject: function(key,defaultValue) {
                  return JSON.parse($window.localStorage[key] || defaultValue);
                }
              }
            }])
})()

然后它可以在控制器中使用,如:

(function(){
   var app = angular.module('yourApp');
   var appCtrl = app.controller('AppCtrl', AppCtrl);

   appCtrl.$inject = ['$localStorage'];

   function appCtrl($localStorage){
       $localStorage.get("yourVariable");
       $localStorage.getObject("yourObject");

       $localStorage.set("yourVariable");
       $localStorage.setObject(yourObject); //can be a JSON object

   }
 })()