我在Telerik Platform移动应用程序中使用JayData. JayData的好人处理了我正在寻找的事情的例子:
http://jsfiddle.net/JayData/zLV7L/
- var saveFeedIfNotExists = function (Feed) {
- //create jQuery promise
- console.log("create deferred for " + Feed.FeedID)
- var def = new $.Deferred();
- //async thread
- pnrDB.PNRFeeds.filter('it.FeedId == ' + Feed.FeedID).count(function (count) {
- console.log("Add Feed - " + Feed.FeedName);
- if (count == 0) {
- var f = new PNRFeed({
- FeedId: Feed.FeedID,FeedName: Feed.FeedName,ImageName: Feed.ImageName,FeedActive: Feed.IsActive,OrderNumber: parseInt(Feed.OrderNumber) + 1
- })
- pnrDB.PNRFeeds.add(f);
- console.log("Resolve for - " + Feed.FeedName);
- //promise.resolve() indicates that all async operations have finished
- //we add the ADD/SKIP debug info to the promise
- def.resolve("ADD");
- console.log("Resolved - " + Feed.FeedName);
- } else {
- //console.log('Feed id not 0 - ' + f.FeedId);
- def.resolve("SKIP");
- }
- });
- //return promise in order to wait for the async result of local database query
- return def.promise();
- };
我已经添加到这个代码,当我运行它也使用他们的Kendo.js模块为JayData(不同于kendo.js从kendo),似乎中断脚本当第一个承诺在循环函数中创建.这只会发生在脚本运行的第一个时间 – 如果要刷新来重新加载,则它会正常运行,并且第一个项目被插入.
在第二个负载上,似乎工作正常,没有调用他们的JayData模块Kendo:
所以即使它似乎添加第一个项目(ID 19),该项目也不会被添加到数据库.当您重新加载相同的确切脚本时,它会被再次标记为添加,并且不会中断,所以最终进入数据库.
有任何想法或事情要尝试吗?
解决方法
如果你使用html5,那么你可以使用websql来执行数据操作,它提供了所有的功能,如select,insert,update on data
Web sql规范定义了一个用于在数据库中存储数据的API,可以使用sql的变体进行查询.
Web sql规范定义了一个用于在数据库中存储数据的API,可以使用sql的变体进行查询.
您可以使用像下面的功能我在我的英特尔XDK手机应用程序中使用它
- if you are using html5 then you can use websql to perform data operations,it provides all functions like select,update on data
- > The Web sql specification defines an API for storing data in databases
- > that can be queried using a variant of sql. you can use like following
- > function
- <!-- begin snippet: js hide: false -->
- <!DOCTYPE HTML>
- <html>
- <head>
- <script type="text/javascript">
- function insert(){
- var db = openDatabase('mydb','1.0','Test DB',2 * 1024 * 1024);
- var msg;
- db.transaction(function (tx) {
- var nam = document.getElementById("Tname").value;
- var id = document.getElementById("Tid").value;
- var name2 = "velocity";
- tx.executesql('CREATE TABLE IF NOT EXISTS APP (id unique,log)');
- tx.executesql('INSERT INTO APP (id,log) VALUES (?,?)',[id,nam]);
- //tx.executesql('INSERT INTO LOGS (id,log) VALUES (61,'+name2+')');
- msg = '<p>Log message created and row inserted.</p>';
- document.querySelector('#status').innerHTML = msg;
- });
- }
- function readdata(){
- var db = openDatabase('mydb',2 * 1024 * 1024);
- var id = document.getElementById("Tid").value;
- db.transaction(function (tx) {
- tx.executesql('SELECT * FROM APP',[],function (tx,results) {
- console.log("All rows:");
- var len = results.rows.length,i;
- msg = "<p>Found rows: " + len + "</p>";
- document.querySelector('#status').innerHTML += msg;
- for (i = 0; i < len; i++){
- msg = "<p><b>Name :-" + results.rows.item(i).log +"<br/>Contact :-" +results.rows.item(i).id + "</b></p>";
- msg = "<p><b>Name :-" + results.rows.item(i).log +"<br/>Contact :-" +results.rows.item(i).id + "</b></p>";
- //var row = result.rows.item(i);
- //msg = console.log(" " + row.contact + " " + row.nam);
- document.querySelector('#status').innerHTML += msg;
- }
- },null);
- });
- }
- function ByContact(){
- var db = openDatabase('mydb',2 * 1024 * 1024);
- var con = document.getElementById("Con").value;
- db.transaction(function (tx) {
- tx.executesql('SELECT * FROM APP WHERE (id LIKE ?);',[con],null);
- });
- }
- </script>
- </head>
- <body style="background-image:url('f.jpg');background-repeat:no-repeat;">
- <h1 align="center"><font color="white">Contact Form</font></h1>
- <div style="color:white">
- <table align="center">
- <tr>
- <td>contact no</td>
- <td><input type="text" id="Tid"/></td>
- </tr>
- <tr>
- <td>Name</td>
- <td><input type="text" id="Tname"/></td>
- </tr>
- <tr>
- <td>
- <button id="add" onclick="return insert();">Insert</button>
- </td>
- <td>
- <button onclick="return readdata();" id="read">readdata</button>
- </td>
- <td>
- </td>
- </tr>
- </table>
- <table>
- <tr>
- <td>
- <button onclick="return ByContact();" id="GetByContact">GetByContact</button>
- </td>
- <td>
- <input type="text" id="Con"/>
- </td>
- </tr>
- </table>
- <div id="status" name="status"><font color="white">Your Data Will Show Here</font></div>
- </div>
- </body>
- </html>
你可以从中获得更多的信息
https://github.com/ccoenraets/backbone-directory/tree/master/localdb
http://www.tutorialspoint.com/html5/html5_web_sql.htm