我正在使用 angularjs 路由:
angular.module('questionModule', []).
config(['$routeProvider', function ($routeProvider) {
$routeProvider.
when('/questions', { templateUrl: 'partials/questions.htm', controller: QuestionsController }).
when('/questions/:Id', { templateUrl: 'partials/questionDetail.htm', controller: QuestionDetailCtrl }).
otherwise({ redirectTo: '/questions' });
} ]);
在本页面:
<html ng-app="questionModule" manifest="AngularManifest.appcache" >
<head>
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js" ></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
<script src="question.js" type="text/javascript"></script>
<script src="app.js" type="text/javascript"></script>
<script src="appCacheBootstrap.js" type="text/javascript"></script>
</head>
<body>
<h2>This example uses angular js routing to display partial views</h2>
<div ng-view></div>
</body>
然而,当我对部分视图文件之一进行更改并更新清单文件以强制刷新应用程序缓存时,更改不会出现。我必须访问 chrome://appcache-internals/ 并删除应用程序缓存才能查看更新。我如何使这个自动化?当我在不使用路由的页面上时,应用程序缓存似乎可以正确刷新。
这是我处理清单文件更改的方式:
$(function () {
if (window.applicationCache) {
applicationCache.addEventListener('updateready', function () {
console.log("appcache status: " + window.applicationCache.status);
if (window.applicationCache.status == window.applicationCache.UPDATEREADY) {
window.applicationCache.swapCache();
if (confirm('A new version of this site is available. Load it?')) {
window.applicationCache.update();
window.location.reload();
}
}
});
}
{
console.log("null window.applicationCache");
}
});
当我在 augularjs 路由页面上时,window.applicationCache 为空。