次のJavascriptコード(EclipseのPhonegap)で問題が発生しています:
function FileStore(onsuccess, onfail){
//chain of Phonegap File API handlers to get certain directories
function onGetSupportDirectorySuccess(dir){
//stuff
onsuccess();
}
function getDirectory(dir){
return "something" + dir;
}
}
var onFileStoreOpened = function(){
if (window.file_store instanceof FileStore){
console.log('window.file_store is a FileStore');
console.log(window.file_store.getDirectory('something'));
}
}
var onDeviceReady = function(){
window.file_store = new FileStore(onFileStoreOpened, onFileStoreFailure);
}
ここでは、アプリのファイルサービスを初期化するためにいくつかのことを行い、コールバックからの初期化でそれらを使用したいと思います。LogCatに次のエラーメッセージが表示されます。
07-03 06:26:54.942: D/CordovaLog(223): file:///android_asset/www/index.html: Line 40 : window.file_store is a FileStore
07-03 06:26:55.053: D/CordovaLog(223): file:///android_asset/www/cordova-1.8.1.js: Line 254 : Error in success callback: File7 = TypeError: Result of expression 'window.file_store.getDirectory' [undefined] is not a function.
コードを移動し、getDirectory()内のすべてを削除して有効であることを確認した後、getDirectory()がwindowのメンバー関数として表示されないことを示唆するエラーメッセージを理解することすらできません。 window.file_storeがFileStoreオブジェクトとして認識されている場合でも、file_store。それは私には意味がないので、解釈は間違っていると思います。どんな啓蒙も大歓迎です。
それ以来、私は次のことを試しました。
window.file_store = {
app_data_dir : null,
Init: function(onsuccess, onfail){
//chain of Phonegap File API handlers to get directories
function onGetSupportDirectorySuccess(dir){
window.file_store.app_data_dir = dir;
console.log("opened dir " + dir.name);
onsuccess();
}
},
GetDirectory : function(){
return window.file_store.app_data_dir; //simplified
}
}
var onFileStoreOpened = function(){
var docs = window.file_store.getDirectory();
console.log('APPDATA: ' + docs.fullPath);
}
var onDeviceReady = function() {
window.file_store.Init(onFileStoreOpened, onFileStoreFailure);
}
そして私は得る
D/CordovaLog(224): file:///android_asset/www/base/device.js: Line 81 : opened dir AppData
D/CordovaLog(224): file:///android_asset/www/cordova-1.8.1.js: Line 254 : Error in success callback: File7 = TypeError: Result of expression 'docs' [null] is not an object.
ここでやりたいのは、起動時に特定のディレクトリが存在することを確認し(1つを除いてすべて削除しました)、将来使用するためにディレクトリオブジェクトを保存し、すべての初期化が完了した後にそれを取得して使用することです。グローバル名前空間のすべてが必要です。もちろん、必要に応じて特定のインスタンスを使用できるようにしたいと思います。理解に問題があることを示しているため、そのように機能させることができないので不安ですが、これを実現することすらできません。単一のグローバルなもので動作します。これはJavascriptの問題ですか、それともPhonegapの問題ですか?