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

QQ登录

只需一步,快速开始

查看: 2641|回复: 9

[处理中4] 刷新父页面

[复制链接]

37

主题

144

帖子

447

积分

中级会员

Rank: 3Rank: 3

积分
447
QQ
发表于 2017-7-3 16:16:25 | 显示全部楼层 |阅读模式
父页面查询sqlite的数据加载到data中,父页面有个list绑定data显示数据,然后用var purchaseTaskCode = this.comp("purchaseTaskCode").val("purchase_task_code", 0);获取第一条数据的值传给子页面,子页面保存数据后用this.comp("winNewPurchaseReceiver").windowEnsure(event,true);返回父页面,父页面的list中数据更新了,但是再次打开子页面时,var purchaseTaskCode = this.comp("purchaseTaskCode").val("purchase_task_code", 0);获取到的不是data中最新的值,但是用调试刷新页面后就能获取到最新的值了,是什么原因啊? QQ截图20170703161249.png


1

主题

6163

帖子

2095

积分

金牌会员

Rank: 6Rank: 6

积分
2095
QQ
发表于 2017-7-3 17:35:24 | 显示全部楼层
界面没有请求最新的数据  他不是一打开界面就加载的最新数据吗  请求的逻辑是在哪里实现的?
回复 支持 反对

使用道具 举报

37

主题

144

帖子

447

积分

中级会员

Rank: 3Rank: 3

积分
447
QQ
 楼主| 发表于 2017-7-3 17:44:37 | 显示全部楼层
半导体 发表于 2017-7-3 17:35
界面没有请求最新的数据  他不是一打开界面就加载的最新数据吗  请求的逻辑是在哪里实现的? ...

看对话框后面的列表,列表是绑定data显示的数据,列表是显示了最新的数据的,说明data是请求了最新数据的啊,data的数据请求写在onCustomRefresh事件中
        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_code||', 数量:'||sum(quantity)||'吨, '||case when is_finish=1 then '已结束, ' else '未结束, ' end||case when is_upload=1 then '已上传' else '未上传' end as purchase_record,purchase_id,purchase_task_code,is_finish,purchase_date FROM gap_purchase_task group by purchase_task_code order by substr(purchase_task_code,4,12) desc 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(append);
                        }
                }
                function onError(msg) {
                        data.doRefreshAfter(false, event.options);
                }
        };
回复 支持 反对

使用道具 举报

37

主题

144

帖子

447

积分

中级会员

Rank: 3Rank: 3

积分
447
QQ
 楼主| 发表于 2017-7-3 17:47:49 | 显示全部楼层
半导体 发表于 2017-7-3 17:35
界面没有请求最新的数据  他不是一打开界面就加载的最新数据吗  请求的逻辑是在哪里实现的? ...

新打开的父页面加载数据没问题的,获取data的值传递给子页面也没问题,我是父页面打开子页面填报后返回父页面,绑定data的list显示了填报的数据,但是用this.comp("purchaseTaskCode").val("purchase_task_code", 0);获取到的还是新打开的父页面中的第一条数据
回复 支持 反对

使用道具 举报

发表于 2017-7-4 17:52:37 | 显示全部楼层
cherishdqy 发表于 2017-7-3 17:47
新打开的父页面加载数据没问题的,获取data的值传递给子页面也没问题,我是父页面打开子页面填报后返回父 ...

是windowDialog组件打开子页面吗??
请设置映射
http://docs.wex5.com/wex5-ui-question-list-2163

返回自数据,父自然会更新!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

37

主题

144

帖子

447

积分

中级会员

Rank: 3Rank: 3

积分
447
QQ
 楼主| 发表于 2017-7-5 08:41:25 | 显示全部楼层
liangyongfei 发表于 2017-7-4 17:52
是windowDialog组件打开子页面吗??
请设置映射
http://docs.wex5.com/wex5-ui-question-list-2163

父页面的data是更新了的,绑定了data的list的数据是有显示新增的数据的,只是用this.comp("purchaseTaskCode").val("purchase_task_code", 0);获取data的第一条数据时,只能获取到打开父页面时加载的数据的第一条,而获取不到新增的数据。要重新刷新父页面才可以获取到新的。
或者有什么方法可以在关闭子页面的时候刷新父页面吗?
子页面用this.getParent().comp('purchaseData').refreshData();刷新data也没有作用
回复 支持 反对

使用道具 举报

发表于 2017-7-5 11:26:48 | 显示全部楼层
cherishdqy 发表于 2017-7-5 08:41
父页面的data是更新了的,绑定了data的list的数据是有显示新增的数据的,只是用this.comp("purchaseTaskC ...

list 中点击 获取当前行对象应该是
http://docs.wex5.com/wex5-ui-question-list-2019/

this.comp("purchaseTaskCode").getValuel("purchase_task_code")  第二个参数表示行对象!
如果不填写,默认表示当前选中行!   你指定为 0 没什么用的!

如果你想获取传递回来的行!还可以通过接管windowDialog 的 onReceived 事件中获取!

this.getParent().comp('purchaseData')  确实是表示获取父页面的data组件对象啊!

其实list数据多!尽量少刷新!每次关闭详细页都刷新list ,这样性能非常差了!


qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

37

主题

144

帖子

447

积分

中级会员

Rank: 3Rank: 3

积分
447
QQ
 楼主| 发表于 2017-7-5 16:30:13 | 显示全部楼层
liangyongfei 发表于 2017-7-5 11:26
list 中点击 获取当前行对象应该是
http://docs.wex5.com/wex5-ui-question-list-2019/

我换了一种方法去取值了。
现在有个问题就是windowDialog打开的子页面,能在子页面加个按钮刷新子页面吗?
回复 支持 反对

使用道具 举报

发表于 2017-7-5 17:27:00 | 显示全部楼层
cherishdqy 发表于 2017-7-5 16:30
我换了一种方法去取值了。
现在有个问题就是windowDialog打开的子页面,能在子页面加个按钮刷新子页面吗 ...

可以啊!windowDialog 管理的w文件!自己修改页面!添加按钮呗!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

37

主题

144

帖子

447

积分

中级会员

Rank: 3Rank: 3

积分
447
QQ
 楼主| 发表于 2017-7-5 17:35:04 | 显示全部楼层
liangyongfei 发表于 2017-7-5 17:27
可以啊!windowDialog 管理的w文件!自己修改页面!添加按钮呗!

不知道怎么实现刷新当前子页面,我用window.location.reload()或者history.go(0);都是刷新整个页面,又回到首页了,子页面是用windowDialog打开的,我的子页面里有保存按钮,我想在点击保存后刷新这个子页面,相当于从父页面重新打开子页面一样
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-7 18:56 , Processed in 0.073579 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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