4

私は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 です。

4

2 に答える 2