您如何使用 PhoneGap 清除 angular 视图的缓存?

How do you bust cache for angular views using PhoneGap?

我已经完全接受了使用 angular 的好处,并且有一个混合应用程序(使用 PhoneGap)我打算转换(从 Jquery 移动)但是我有一个弄清楚如何将我的新代码添加到应用程序时出现问题。

该应用程序目前托管在我们的网站上(不是设备本地的),因此正常的缓存会按预期工作。我更新网页或 js,应用程序看到新内容(因为底层 webview/browser 知道它的新内容)。

但是使用 angular 的 SPA 方法,主模块会预先加载并根据加载新的部分更改视图。也不是问题。

但是,当我更改我的应用程序模块(由 ng-app="demo" 加载的代码)时会发生什么?例如添加新的路由、控制器或视图。

既然它已经在 bootstrap 的浏览器中加载,我如何告诉应用程序有变化并且它需要重新加载整个应用程序?

有 3 个用例需要考虑:

1) 在 PC/browser 上,您只需刷新页面即可。我不能指望用户知道这样做,但它并没有那么糟糕,因为用户可能会打开和关闭他们的浏览器,从而重新加载新的 app/js.

2) 当我发布新的 PhoneGap 应用程序(到应用程序商店)时,它会在安装过程中强制使用浏览器 close/reopen,因此用户将获得新代码。

3) 这才是真正的坚持者。在正常使用 PhoneGap 应用程序期间,用户可能会打开该应用程序并且永远不会再次关闭它(只是暂停和重新打开)。这些用户不是精通技术的用户,甚至可能不知道如何重新启动应用程序,更别提意识到他们应该尝试了。

那么,当基础应用模块发生变化时,angular 强制应用刷新的方法是什么?

还是我自己创建某种类型的版本检查系统以在需要时强制执行 reload()。

对我来说这似乎是一种常见情况,但我在使用 angular 进行缓存时发现的所有内容都说明了这种情况:

"Since you probably want to maintain browser caching for your views, partials or other routes"

不,我不想 - 我想为我的 app/views/controller 清除缓存,因为我知道它已经改变了。

angular phonegap 缓存破坏者

您可以在每次使用时动态 load/unload 您的控制器。 This article 应该可以帮助您入门。