2013-03-19 207 views
1

我正在做一個使用以下博客作爲代碼庫的概念驗證應用程序。JayData/Phonegap在iPad模擬器中工作,但不是iPad設備

http://jaydata.org/blog/how-to-check-if-your-websql-environment-is-working

當我運行使用的XCode 4.6.1的iPad模擬器6.1以下,我可以看到預期的輸出。

[LOG] Received Event: deviceready 
[LOG] begin testing 
[LOG] define Department Entity 
[LOG] define Employee Entity 
[LOG] saving Entity done. 

但是,當我通過USB運行下列實際iPad設備時,其輸出結束於「定義部門實體」。我沒有看到任何錯誤;這裏是console.log輸出:

[LOG] Received Event: deviceready 
[LOG] begin testing 
[LOG] define Department Entity 

任何幫助將不勝感激。

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<meta name="format-detection" content="telephone=no" /> 
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" /> 
<link rel="stylesheet" type="text/css" href="css/index.css" /> 
<title>Hello World</title> 

<!--jQuery--> 
<script type="text/javascript" src="jquery/jquery-1.7.2.js"></script> 
<script type="text/javascript" src="jquery/jquery.mobile-1.1.1.js"></script> 

<!--jayData and the different providers used--> 
<script type="text/javascript" src="js/JayData-1.2.7.1/JayData.js"></script> 
<script type="text/javascript" src="js/JayData-1.2.7.1/jaydataproviders/SqLiteProvider.js"></script> 

<!--PhoneGap--> 
<script type="text/javascript" src="cordova-2.5.0.js"></script> 
</head> 
<body> 
<div class="app"> 
    <h1>Apache Cordova</h1> 
    <div id="deviceready" class="blink"> 
     <p class="event listening">Connecting to Device</p> 
     <p class="event received">Device is Ready</p> 
    </div> 
</div> 
<script type="text/javascript" src="cordova-2.5.0.js"></script> 
<script type="text/javascript" src="js/index.js"></script> 
<script type="text/javascript"> 
    app.initialize(); 
    </script> 
<script type="text/javascript"> 
    var jqmReady = $.Deferred(), 
     pgReady = $.Deferred(); 

    // mobileinit does not work. pageinit works. 
    // jqm ready 
    $(document).bind("pageinit", jqmReady.resolve); 

    // phonegap ready 
    document.addEventListener("deviceready", pgReady.resolve, false); 

    // all ready :) 
    $.when(jqmReady, pgReady).then(function() { 
     console.log('begin testing'); 

console.log('define Department Entity'); 
$data.Entity.extend("$org.types.Department", 
{ 
    Id: { type: "int", key: true, computed: true }, 
    Name: { type: "string", required: true }, 
    Employees: { 
     type: Array, 
     elementType: "$org.types.Employee", 
     inverseProperty: "Department" 
    } 
}); 
console.log('define Employee Entity'); 
$data.Entity.extend("$org.types.Employee", 
{ 
    Id: { type: "int", key: true, computed: true }, 
    Name: { type: "string", required: true }, 
    Department: { type: $org.types.Department, inverseProperty: 'Employees' } 
}); 

$data.EntityContext.extend("$org.types.OrgContext", { 
    Department: { type: $data.EntitySet, elementType: $org.types.Department }, 
    Employee: { type: $data.EntitySet, elementType: $org.types.Employee } 
}); 

$org.context = new $org.types.OrgContext({ 
    name: "webSql", databaseName: "OrgDatabase", 
    dbCreation: $data.storageProviders.DbCreationType.DropTableIfChanged 
}); 

var department = new $org.types.Department({ Name: 'Department1' }); 
var employee = new $org.types.Employee({ Name: 'John Smith' }); 
department.Employees = [employee]; 

$org.context.onReady(function() { 
    $org.context.Department.add(department); 
    $org.context.saveChanges(); 
}); 

console.log('saving Entity done.'); 

    }); 
     </script> 

</body> 
</html> 
+0

如果你使用phonegap,爲什麼你需要jaydata? Phonegap擁有自己的[數據庫](http://docs.phonegap.com/en/1.2.0/phonegap_storage_storage.md.html)。 – Maxbester 2013-03-20 10:30:50

回答

2

回答了jaydata論壇,但我複製到這裏,也許別人會搜索此

要點:1。 使用jQuery 1.8+,1.7不支持。如果你必須使用1.7,那麼請使用q承諾,請告訴我們,如果你有任何問題 2.可惜的是,你只能預訂onload事件後deviceready事件....

此代碼的工作爲我們在iPad上6.1

(function main() { 
var jqmReady = $.Deferred(); 
var pgReady = $.Deferred(); 

// mobileinit does not work. pageinit works. 
// jqm ready 
$(document).bind("pageinit", jqmReady.resolve); 

// phonegap ready 
$.when($.ready) 
.then(function(){ 
    document.addEventListener("deviceready", pgReady.resolve, false); 
}); 

var Employee = $data.define('Employee', { 
    Id: { type: "int", key: true, computed: true }, 
    Name: { type: "string", required: true }, 
    Department: { type: "Department", inverseProperty: 'Employees' } 
}); 

var Department = $data.define('Department', { 
    Id: { type: "int", key: true, computed: true }, 
    Name: { type: "string", required: true }, 
    Employees: { type: Array, elementType: "Employee", inverseProperty: 'Department' } 
}); 

var OrgDatabase = $data.EntityContext.extend('OrgDatabase', { 
    Departments: { type: $data.EntitySet, elementType: Department }, 
    Employees: { type: $data.EntitySet, elementType: Employee } 
}); 

var context = new OrgDatabase({name: 'webSql', databaseName: 'OrgDatabase', dbCreation: $data.storageProviders.DbCreationType.DropTableIfChanged});    

// all ready :) 
$.when(jqmReady, pgReady, context.onReady()).then(function() { 

    var employee = new Employee({ Name: 'John Smith' }); 
    var department = new Department({ Name: 'Department1' }); 
    department.Employees = [employee]; 

    context.Departments.add(department); 
    context.saveChanges(function() { 
     alert('saving Entity done.'); 
    }); 
}); 
})() 
相關問題