私は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>
しかし、部分ビュー ファイルの 1 つを変更し、マニフェスト ファイルを更新してアプリ キャッシュを強制的に更新しても、変更は表示されません。アップデートを確認するには、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.applicatonCache にいるときは null です。