2016-03-06 63 views
2

我一直在構建一個Ionic應用程序,並且去實施ngStorage。這是簡單地擴展我的應用程序並存儲正確範圍內的東西的一種簡單而有效的方法。例如,我去了,但到處都是$scope.listOfThings,我用$scope.$storage.listOfThings代替了它。ngStorage和原型

$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

這是有道理的,因爲原型沒有存儲在本地存儲,但是這裏有什麼解決方案?我不是真的想要刪除原型,我也不是真的想要存儲$存儲v listOfThings的常見版本。我錯過了什麼?

回答

2

本地存儲是一個持久性模型。它假設存儲數據而不是包含函數的對象。您應該將您的列表數據存儲在本地存儲中,然後檢索它,並將其傳遞到工廠。向您的工廠添加一個方法,將接收作爲參數的事物列表。這樣,您將能夠使用正確的數據初始化您的工廠並保留功能

+0

良好的調用並調出持久性模型。在此之前,我只需從$ storage listOfThings創建一個新的'ListOfThings' $ '$ scope。$ storage.listOfThings = new ListOfThings($ scope。$ storage.listOfThings);'Thanks! – KJ3