起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1330|回复: 1

[处理中3] sqlite一个页面加载两个data报错

[复制链接]

37

主题

144

帖子

447

积分

中级会员

Rank: 3Rank: 3

积分
447
QQ
发表于 2017-6-28 17:17:44 | 显示全部楼层 |阅读模式
本帖最后由 cherishdqy 于 2017-6-28 17:21 编辑

一个页面有两个data,都写了CustomRefresh事件,只有一个data时页面加载数据没问题,两个data都查询时数据加载不出来,调试报错
QQ图片20170628171506.png

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语句不同



13

主题

313

帖子

399

积分

中级会员

Rank: 3Rank: 3

积分
399
QQ
发表于 2017-6-29 14:41:49 | 显示全部楼层
F12调试一下代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2025-7-13 01:49 , Processed in 0.054823 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表