缓存工厂或只是普通对象

时间:2014-02-19 08:55:47

标签: javascript angularjs

我正在创建一个中型角应用,需要存储数据并在用户旅程结束时使用它发送到服务器(公司安全策略是客户数据的一种传输 - 除非100%不可避免 - 别问!)

所以我一直在做一些阅读,因为仍然是一个新的角度,并认为我已经决定最好和最干净的方法来做一个“dataFactory”或服务,以免污染应用程序与“主控制器”等等

我的问题是,在这个服务中,我是否只有一个普通变量,我可以为其分配键:值或者更好的是在服务中创建一个cacheFactory来存储数据?

每个人的利弊是什么?

1 个答案:

答案 0 :(得分:1)

您需要创建service来存储数据。

Globals are ever a bad practice - 对于代码中某处遗失的normal object,情况也是如此。

以下解决方案:

// service
myApp.service('controllerSharingData', function() {
  var __variables = {};

  return {
   get: function(varname) {
    return (typeof __variables[varname] !== 'undefined') ? __variables[varname] : false;
   },
   set: function(varname, value) {
    __variables[varname] = value;
   }
  };
});

// controllers
myApp.controller('IndexCtrl', function($scope, controllerSharingData) {
  controllerSharingData.set('toto', 'hello world');
});

myApp.controller('ListCtrl', function($scope, controllerSharingData) {
  alert(controllerSharingData.get('toto'));
});