javascript - 未添加要插入移动数据库的第一项

标签 javascript jquery kendo-ui telerik jaydata

我在 Telerik 平台移动应用程序中使用 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();
        };

然而,我已经添加到这段代码中,当我还使用他们的 JayData Kendo.js 模块(不同于 kendo 的 kendo.js)运行它时,它似乎在第一个 promise 创建时中断了脚本循环功能。这只会在第一次运行脚本时发生 - 如果您要刷新以重新加载,它会正确运行并且第一个项目会被插入。

enter image description here

在第二次加载时,它似乎工作得很好,没有调用他们的 Kendo JayData 模块:

enter image description here

因此,即使它看起来好像要添加第一个项目(ID 19),但该项目永远不会添加到数据库中。但是,当您重新加载完全相同的脚本时,它会再次被标记为添加并且不会被中断,因此它最终会进入数据库。

任何人有任何想法或事情要尝试吗?

最佳答案

如果你使用的是html5那么你可以使用webSQL来进行数据操作,它提供了数据的选择、插入、更新等所有功能 Web SQL 规范定义了一个 API,用于将数据存储在数据库中,可以使用 SQL 的变体进行查询。

你可以像下面这样使用我在我的 Intel XDK 移动应用程序中使用过的函数

if you are using html5 then you can use webSQL to perform data operations,it provides all functions like select,insert,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', '1.0', 'Test DB', 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', '1.0', 'Test DB', 2 * 1024 * 1024);
var con = document.getElementById("Con").value;
db.transaction(function (tx) {
  tx.executeSql('SELECT * FROM APP WHERE (id LIKE ?);',[con], 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);
});
}

</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

关于javascript - 未添加要插入移动数据库的第一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25405565/

相关文章:

javascript - Jquery 点击触发另一个 Div - 简单

javascript - Bootstrap 中的响应式动画背景?

javascript - 使用 html 表单的 ajax 调用将无法正常工作

javascript - [ meteor 来电] : Loses prototype information

javascript - 获取调用函数的元素的 ID

asp.net-mvc - Kendo UI MVC 的密码文本框

local-storage - 使用 localStorage 缓存 Kendo UI DataSource 对象

c# - 如何禁用级联的 Kendo DropDownLists?

javascript - Ajax Post 参数名称中带有 [ ]

javascript - 网络 worker : how to know if the browser supports it?