我一直在构建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。我想念什么?

最佳答案

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

关于javascript - ngStorage和原型(prototype),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35823612/

10-09 08:02