2014-10-24 3 views
0

В настоящий момент скрипт запускается на ОС Android.Ошибка чтения файла

Глобалы Файл

///Store Global Variables 
var Globals = { 
    Storage: window.localStorage, 
    OfflineMode: false, 
    GetSettingsString : function() 
    { 
     return JSON.stringify(Settings); 
    }, 

    SetSettings : function(str) 
    { 
     try 
     { 
      Settings = JSON.parse(str); 

      if(Settings.Id != 0) 
       VelocityMeetings.app.navigate("scan/", { root: true }); 
     } 
     catch(e) 
     { 
      alert(e); 
      Globals.SetSettings(); 
     } 
    }, 
    ///Experimentation Function 
    SetSettings: function() { 
     //Settings = JSON.parse(str); 

     Settings.OfflineMode = false, 
      Settings.Username = "mager1794", 
      Settings.Password = "mn1apwfm", 
      Settings.Id = 0; 

     alert("Values Set Manually"); 

     //VelocityMeetings.app.navigate("scan/", { root: true }); 
    }, 

    Init: function() { 
     // this.SetSettings(/*FileStream.ReadFile("settings.dat")*/); 
     alert("test2"); 
     this.SetSettings(FileStream.ReadFile("settings.dat")); 
     alert("test3"); 

    }, 

    Save: function() { 
     FileStream.WriteFile("settings.dat", GetSettingsString()); 
    } 

}; 

document.addEventListener("deviceready", ondeviceReady(), false); 



// Cordova is ready to be used! 
// 
function ondeviceReady() { 
    alert("test"); 
    Globals.Init(); 

} 

FileSystem Файл

var FileStream = { 

    WriteFile: function (filename, objtoWrite) { 

     _filename = filename; 
     _dataobj = objtoWrite; 
     window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, _gotFSWrite, fail); 
    }, 

    WriteFile: function (filename, objtoWrite, type) { 

     _filename = filename; 
     _dataobj = objtoWrite; 
     _type = type; 
     window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, _gotFSWrite, fail); 
    }, 

    ReadFile: function (filename) { 
     alert("ReadFile Called"); 
     _filename = filename; 
     window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, _gotFSRead, fail); 

     return _dataread; 
    }, 

    _dataread: null, 
    _dataobj: null, 
    _type : "WRITE", 
    _filename: "", 
    _gotFileWriter: function (writer) { 
     writer.onwrite = function (evt) { 
      _isBusy = false; 
     }; 
     if(_type=="WRITE") 
      writer.write(_dataobj); 
     if (_type == "APPEND") 
     { 
      writer.seek(writer.length); 
      writer.write(_dataobj); 
     } 
     writer.abort(); 
    }, 

    _gotFSWrite: function (fileSystem) { 
     fileSystem.root.getFile(_filename, { create: true }, _gotFileEntryWrite, fail); 
    }, 
    _gotFileEntryWrite: function (fileEntry) { 
     fileEntry.createWriter(_gotFileWriter, fail); 
    }, 
    _gotFSRead: function (fileSystem) { 
     alert("gotFSRead Called"); 
     fileSystem.root.getFile(_filename, { create: true }, _gotFileEntryRead, fail); 
    }, 
    _gotFileEntryRead: function (fileEntry) { 
     alert("gotFileEntryRead Called"); 
     fileEntry.file(_gotFileRead, fail); 
    }, 
    _gotFileRead: function (file) { 
     alert("gotFileRead Called"); 
     var reader = new FileReader(); 
     reader.onloadend = function (evt) { 
      _dataread = evt.target.result; 
     }; 
     reader.readAsText(file); 

    }, 
    _fail: function (error) { 
     throw "File Failed"; 

    } 
}; 

функция GotFSRead никогда не было достигнуто, и я не могу понять, почему я поместил в предупреждениях только так я могу смотреть как это прогрессировал через функции. Кроме того, вы можете сохранить обратный вызов в переменной? потому что кажется, что для функции чтения файла потребуется обратный вызов для успешного получения данных.

ответ

0

Да, в функциях Javascript есть объекты, поэтому они могут быть привязаны к переменным точно так же, как вы делаете в своем коде здесь.

Ссылки на функции в объекте FileStream отсутствуют this ссылки, такие как this._gotFSRead. Например:

ReadFile: function (filename) { 
    alert("ReadFile Called"); 
    this._filename = filename; 
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, this._gotFSRead, this._fail); 

    return this._dataread; 
}, 

Есть много мест, где это отсутствует, и вы должны исправить свою _fail ссылки тоже.

Смежные вопросы