ngStorage和Prototypes

时间:2016-03-06 05:46:47

标签: javascript angularjs cordova ionic-framework

我一直在构建一个Ionic应用程序,然后开始实施ngStorage。这是一个简单易用的方法,可以简单地扩展我的应用程序并存储适合范围的内容。例如,我去过那里,$scope.listOfThings我用$scope.$storage.listOfThings替换了它。

$scope.$storage.listOfThings = new ListOfThings(things);

这很好用,但是listOfThings上有一个原型(这个问题当然是简化的):

.factory('ListOfThings', function(Task) {

  var ListOfThings = function(things) {
    this.listOfThings = things
  };

  ListOfThings.prototype.addThing = function(thing) {
    this.listOfThings.push(thing);
  };

  return ListOfThings;
});

现在当我像以前一样调用addThing函数时($scope.$storage.listOfThings.addThing(thing);我得到$scope.$storage.listOfThings.addThing is not a function

这是有道理的,因为原型没有存储在本地存储中,但这里的解决方案是什么?我并不想删除原型,我也不想存储$ storage版本和listOfThings的常规版本。我错过了什么?

1 个答案:

答案 0 :(得分:2)

本地存储是一种持久性模型。它假设存储数据而不是具有功能的对象。您应该将列表的数据存储在本地存储中,然后检索它,然后将其传递给工厂。向工厂添加一个方法,该方法将接收作为参数的事物列表。这样,您就可以使用正确的数据初始化工厂并保留功能