【问题标题】:Using a Firebase Angular application offline离线使用 Firebase Angular 应用程序
【发布时间】:2015-11-01 07:16:30
【问题描述】:

我目前正在构建一个使用 Firebase 和 AngularFire 作为我选择的后端/服务器的 Angular 1.x 应用程序。 由于该应用程序/网站针对移动设备进行了优化,并且当您将其添加到主页时非常适合作为应用程序,我想知道如何让用户即使手机离线也可以使用它。

在网上搜索,我发现 Firebase 为 Android Java 的对应物提供了一个 keepSynced(true),但是我无法为 js 找到这样的选项。 然后我使用 HTML5 的 localStorage 和基于上次更改时间的同步进行手动方法,但是由于我使用了 AngularFire 的一些方便的命令(例如 $save),因此我的大部分代码都被破坏了。

有什么建议吗?

【问题讨论】:

标签: javascript angularjs firebase angularfire


【解决方案1】:

使用$provide.decoratorangular docs
$provide.decorator 的一个很好的用例是当您需要对您的模块所依赖的某些第三方/上游服务进行较小的“调整”时,同时保持服务完好无损(因为您不是服务的所有者/维护者)stackoverflow question.

基本上,您可以检查 navigator.onLine === true 内部装饰器(或使用任何其他方法来检测对 firebase 的请求是否会失败),然后根据您的需要覆盖 angularFire 的某些方法(写入 localStorage 而不是发送实际的 angularFire请求)

这是我的 example 使用 angularfire 覆盖 $add 方法和装饰器

here's the basic example的装饰器

【讨论】:

    【解决方案2】:

    为离线案例手动维护一个功能齐全的应用程序可能是一条非常棘手的道路,但有几种方法可以克服这个问题,你可以尝试使用kinvey,查看我认为这正是你想要的页面正在寻找。

    另一种方法是使用 indexedDB 而不是 localStorage,并根据您的连接状态选择保存操作的目标,您可以通过谷歌搜索有关同步离线 html5 indexedDB 的大量资源。 希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-21
      • 2019-11-18
      • 2016-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多