モバイルデバイスで実行すると、ダウンロードしたJSONファイルからデータをロードする必要があるangularおよびJS-Dataを使用するイオンアプリがあります。
アプリでファイルを www フォルダーにまとめて、デバイスの種類に応じて該当する保存フォルダーにコピーしています。ファイルがコピーされると、インターネット接続がある場合、アプリは CDN から最新のデータを取得しようとし、新しいデータを JSON ファイルに保存し、新しいデータを JSON ファイルから JS-Data に読み込みます。ユーザーには新しいデータが表示されます。
これは、ファイルが保存され、ユーザーに新しいデータが表示された後のビットを除いてすべて機能し、古いキャッシュされたデータが表示されます。ファイルに保存する前にデータをログアウトすると正しいデータが表示され、$cordovaFile を使用してファイルをロードすると正しいデータが表示されます。ファイルへのパスは正しく、すべてのデバッグは JS-Data を指しており、2 回目にデータを正しく取得しています。
appData
.loadData (basePath)
.then (() => {
assetsFactory
.backgroundUpdate ()
.then (basePath => appData.loadData (basePath, true))
})
ここで、basePath はファイルが保存されているフォルダーへの絶対リンクであり、次に loadData 関数で
appData.loadData = (basePath, bypassCache) => $q ((resolve, reject) => {
if (bypassCache === undefined) {
bypassCache = false
}
let options = {
basePath,
bypassCache,
cacheResponse : true,
}
....
Area.findAll ({}, options)
.then (areas => {
console.log (areas)
})
....
})
console.log (areas) はファイルからの古いデータを表示しますが、上記の正確なコードを使用して、basePath 変数を新しいリモート データを取得したリンクに変更すると、console.log (areas) は新しく更新されたデータを表示します。
キャッシュをバイパスしていないという私が間違っていることについて何か考えはありますか?