|
本帖最后由 cherishdqy 于 2017-6-28 17:21 编辑
一个页面有两个data,都写了CustomRefresh事件,只有一个data时页面加载数据没问题,两个data都查询时数据加载不出来,调试报错
modelload如下:
Model.prototype.modelLoad = function(event) {
var self = this;
// 设备准备好后,才能通过插件打开数据库
document.addEventListener("deviceready", function() {
// 这里在gapDB.js中实现了一个单例对象,为了能在多个功能页中共用一个数据源,避免死锁
self.gapDB = gapDB.getInstance();
// gapDB.js中实现了自动判断并初始化数据库
self.gapDB.initData(function() {
// 初始化后刷新列表
self.comp("testList").refresh(true);
});
});
this.purchaseDataCustomRefresh();
this.purchaseTaskCodeCustomRefresh();
};
Model.prototype.purchaseDataCustomRefresh = function(event){
// 标记当前刷新是异步执行的
event.async = true;
var db = this.gapDB.getDatabase();
var data = event.source;
var append = event.options && event.options.append; // 是否数据追加模式
var limit = event.limit; // 分页行数
var offset = event.offset; // 分页偏移
// 执行SQL查询
SqliteUtil.executeSql(db, "SELECT purchase_task_cod FROM gap_purchase_task LIMIT ? OFFSET ? ", [ limit, offset ], onSuccess, onError);
function onSuccess(res) {
// 转换返回数据结果
var table = SqliteUtil.rowsToTable(res.rows);
if (offset === 0) {
// 如果偏移为零则表明加载第一页,需要在Table中提供总行数,用于分页计算
SqliteUtil.executeSql(db, "SELECT COUNT(*) cnt FROM gap_purchase_task ", [], function(res) {
SqliteUtil.setTableTotal(table, res.rows.item(0).cnt);
doRefreshData();
});
} else {
doRefreshData();
}
function doRefreshData() {
data.loadData(table, append);
// 异步执行模式下,加载数据后必须执行doRefreshAfter
data.doRefreshAfter(true, event.options);
data.refreshData();
}
}
function onError(msg) {
data.doRefreshAfter(false, event.options);
}
};
purchaseTaskCodeCustomRefresh的写法同上,只是查询的sql语句不同
|
|