2
我正在開發一個應用程序,它接收來自API的數據並將其存儲在某種緩存中以將其綁定到UI視圖。這些數據也在幾個視圖中共享,任何對它的更改都應反映在視圖中。到目前爲止,NativeScript最好和最快的選擇是什麼?與SenchaTouch商店/代理模型類似的東西會很棒。謝謝。NativeScript:使用視圖數據綁定的最佳持久性緩存/存儲
我正在開發一個應用程序,它接收來自API的數據並將其存儲在某種緩存中以將其綁定到UI視圖。這些數據也在幾個視圖中共享,任何對它的更改都應反映在視圖中。到目前爲止,NativeScript最好和最快的選擇是什麼?與SenchaTouch商店/代理模型類似的東西會很棒。謝謝。NativeScript:使用視圖數據綁定的最佳持久性緩存/存儲
只需創建一個單例並請求/導入,就像在任何其他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());
這就是我目前做的。問題是我需要隨時將其與任何永久存儲器同步。我正在使用SQLite插件。但整個過程非常複雜。我需要檢查類型並將其轉換。爲了使用SQLite插件,我編寫了一個自定義的SQL查詢適配器。我不太喜歡這個實現。所以,我正在尋找像其他任何框架一樣的隨時可用的解決方案。我來自Appcelarator和Sencha Touch開發,所有這些都實現得非常好... – terreb
Afaik沒有開箱即用的包,可以在NativeScript環境中爲您執行此操作。然而,這不是一件大事。在你的情況中,你可以很容易地將app狀態(上面例子中的'DATA')當作主對象,然後通過向propertyChangeEvent事件添加一個事件監聽器並保存它來保存對持久存儲的任何更改。 –
而且這就是我已經做的:)雖然我最近搬到weakEvenListeners,因爲我擔心NS是否正確收集垃圾。我有20個不同的「商店」和他們的許多「後裔」,這些都與觀點有關。在應用程序工作期間,我看到內存使用情況如何快速增長。它甚至在之前崩潰了,但是當我執行一些優化時,它停止了這樣做。但我仍然不滿意這一切,希望看到至少有第三方的解決方案。 – terreb