【问题标题】:NativeScript: best persistent cache / storage with view data-bindingNativeScript:具有视图数据绑定的最佳持久缓存/存储
【发布时间】:2016-09-21 20:00:17
【问题描述】:

我正在开发一个应用程序,它从 API 接收数据并将其存储在某种缓存中以将其绑定到 UI 视图。这些数据也在多个视图之间共享,对它的任何更改都应反映在视图中。到目前为止,NativeScript 最好和最快的选择是什么?拥有类似于 SenchaTouch 商店/代理模型的东西会很棒。谢谢。

【问题讨论】:

    标签: nativescript


    【解决方案1】:

    只需创建一个单例并请求/导入它,就像在任何其他 Javascript 应用程序中一样。只要您将数据保存在 Observable 中,对它的任何更改都会立即反映在视图中。

    例如

    文件: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

    【讨论】:

    • 这就是我目前所做的。问题是我需要一直将它与任何持久存储同步。我正在为此使用 SQLite 插件。但整个过程非常复杂。我需要检查类型并转换它们。为了使用 SQLite 插件,我编写了一个自定义 SQL 查询适配器。我真的不喜欢实施。因此,我正在寻找与任何其他框架一样的现成解决方案。我来自 Appcelerator 和 Sencha Touch 开发,所有这些都实现得很好......
    • Afaik 没有开箱即用的包可以在 NativeScript 环境中为您执行此操作。但是,实现起来并不是什么大不了的事情。在您的情况下,您可以轻松地将应用程序状态(上面示例中的DATA)视为主状态,然后通过将事件侦听器添加到 propertyChangeEvent 事件并将其保存到持久存储中,然后保存它。
    • 这也是我已经在做的事情:) 我最近搬到了weakEvenListeners,因为我担心NS 是否正确收集垃圾。我有 20 家不同的“商店”和许多与视图绑定的“后代”。在使用该应用程序期间,我看到内存使用量如何快速增长。它以前甚至崩溃过,但是当我实施一些优化时,它停止了这样做。但是我仍然对所有这些混乱不满意,并且希望至少看到第三方解决方案。
    • 显然需要这样的东西。所有其他成熟的框架都具有此功能,无论是作为内置功能还是第三方解决方案。
    猜你喜欢
    • 2012-03-28
    • 2020-09-26
    • 2020-05-23
    • 2011-02-27
    • 1970-01-01
    • 2015-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多