2016-09-20 69 views
2

我正在開發一個應用程序,它接收來自API的數據並將其存儲在某種緩存中以將其綁定到UI視圖。這些數據也在幾個視圖中共享,任何對它的更改都應反映在視圖中。到目前爲止,NativeScript最好和最快的選擇是什麼?與SenchaTouch商店/代理模型類似的東西會很棒。謝謝。NativeScript:使用視圖數據綁定的最佳持久性緩存/存儲

回答

1

只需創建一個單例並請求/導入,就像在任何其他Javascript應用程序中一樣。只要您將數據保存在Observable中,並且任何對其的更改都會立即反映在視圖中。

E.g.

文件:myData.js

var observableArray = require("data/observable-array"); 
var observable = require("data/observable"); 
var DATA = new observable.Observable({ 
    something: 'a value here', 
    somethingElse: 1 
    somethingMany: new observableArray.ObservableArray(['a', 'b', 'c']) 
}); 

exports.getData = function() { return DATA; }; 
exports.fetchFromAPI = function() { /* something that fetches and updates DATA */ } 

在要讀取的數據的任何文件:

var data = require("./myData.js"); 
console.log(data.getData()); 

瞭解更多關於Observables in NativeScript

+0

這就是我目前做的。問題是我需要隨時將其與任何永久存儲器同步。我正在使用SQLite插件。但整個過程非常複雜。我需要檢查類型並將其轉換。爲了使用SQLite插件,我編寫了一個自定義的SQL查詢適配器。我不太喜歡這個實現。所以,我正在尋找像其他任何框架一樣的隨時可用的解決方案。我來自Appcelarator和Sencha Touch開發,所有這些都實現得非常好... – terreb

+0

Afaik沒有開箱即用的包,可以在NativeScript環境中爲您執行此操作。然而,這不是一件大事。在你的情況中,你可以很容易地將app狀態(上面例子中的'DATA')當作主對象,然後通過向propertyChangeEvent事件添加一個事件監聽器並保存它來保存對持久存儲的任何更改。 –

+0

而且這就是我已經做的:)雖然我最近搬到weakEvenListeners,因爲我擔心NS是否正確收集垃圾。我有20個不同的「商店」和他們的許多「後裔」,這些都與觀點有關。在應用程序工作期間,我看到內存使用情況如何快速增長。它甚至在之前崩潰了,但是當我執行一些優化時,它停止了這樣做。但我仍然不滿意這一切,希望看到至少有第三方的解決方案。 – terreb