Javascript 脱机使用Firebase Angular应用程序

Javascript 脱机使用Firebase Angular应用程序,javascript,angularjs,firebase,angularfire,Javascript,Angularjs,Firebase,Angularfire,我目前正在使用Firebase和AngularFire作为我选择的后端/服务器构建Angular1.x应用程序。 由于该应用程序/网站针对移动设备进行了优化,并且当您将其添加到主页时,它非常适合作为一个应用程序,因此我想知道,即使手机处于脱机状态,如何让用户使用它 在网上搜索时,我发现Firebase为Android Java的对应版本提供了KeepSync(true),但我无法为js找到这样的选项。 然后,我使用HTML5的localStorage和基于上次更改时间的同步进行手动操作,但由于我

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

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


有什么建议吗?

使用
$provide.decorator

$Provider.decorator的一个很好的使用案例是,当您需要对某个第三方/上游服务(您的模块依赖于该服务)进行轻微的“调整”,同时保持该服务完好无损(因为您不是该服务的所有者/维护者)

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

下面是我在decorator中使用angularfire重写
$add
方法


对于decorator来说,手动维护一个功能齐全的离线案例应用程序可能是一条非常棘手的道路,但是有几种方法可以克服这一点,你可以尝试使用,检查页面,我认为这正是你想要的

另一种方法是使用indexedDB而不是localStorage,并根据您的连接状态选择保存操作的目标。您只需在Google上搜索有关同步脱机html5 indexedDB的信息,就可以找到有关此主题的大量资源。 我希望这对您有所帮助

这个问题()提到AngularFire支持重新连接中断的连接,但不支持真正的脱机支持。看起来您需要推出自己的解决方案或使用其他服务。