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

QQ登录

只需一步,快速开始

楼主: 苦瓜很甜

[结贴] 页面跳转数据刷新问题

[复制链接]
发表于 2018-10-30 13:25:38 | 显示全部楼层
苦瓜很甜 发表于 2018-10-30 12:47
data组件是这么写的,

        

因为你是异步请求,所以看不出来,你可以debugger 打断点调试下,调用刷新后,肯定还会触发onCustomRefresh 事件的

调用 loadData 后 ,你打印下data.count()是多少??
如果有数据,应该就可以显示的

不显示是因为异步的原因! 使用同步请求就可以了!

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

使用道具 举报

56

主题

245

帖子

535

积分

高级会员

Rank: 4

积分
535
QQ
 楼主| 发表于 2018-10-30 14:09:27 | 显示全部楼层
liangyongfei 发表于 2018-10-30 13:25
因为你是异步请求,所以看不出来,你可以debugger 打断点调试下,调用刷新后,肯定还会触发onCustomRefre ...

嗯,就是异步的原因,我在

var ajaxTimeOut = $.ajax({
                        "global" : false, // 此处设为false,即可
                        "type" : "post",
                        "async" : true,
                        "data" : soap,
                        "dataType" : "text",
                        "url" : url,
                        "timeout" : 10000,// 响应时间
                        "success" : function(data) {
                                // alert("success");
                                // debugger;
                                // 解析返回值
                                if (typeof ActiveXObject != 'undefined' && typeof GetObject != 'undefined') {
                                        var doc = new ActiveXObject('Microsoft.XMLDOM');
                                        var aaa = doc.loadXML(data);
                                }

                                if (typeof DOMParser != 'undefined') {
                                        var xml = (new DOMParser()).parseFromString(data, 'text/xml');
                                        var jsonString = xml.documentElement.textContent;

                                        // json解析结果
                                        var jsonObj = new Function("return" + jsonString)();
                                        var result = jsonObj.success;
                                        if (result == "true") {
                                                justep.Util.hint("取消订单成功", {
                                                        "type" : "warning",
                                                        // "delay" : 100,
                                                        "position" : "bottom",
                                                });
                                        }
                                }
                        },
                        "complete" : function() {
                                self.comp('orderData').refreshData();
                                self.comp('orderFoodsData').refreshData();
                        }
                });
"complete" : function() {
        self.comp('orderData').refreshData();
        self.comp('orderFoodsData').refreshData();
}
里面写就可以了,保证异步跑完了再去执行,谢了,飞哥
回复 支持 反对

使用道具 举报

56

主题

245

帖子

535

积分

高级会员

Rank: 4

积分
535
QQ
 楼主| 发表于 2018-10-30 14:25:40 | 显示全部楼层
本帖最后由 苦瓜很甜 于 2018-10-30 14:30 编辑
liangyongfei 发表于 2018-10-30 13:25
因为你是异步请求,所以看不出来,你可以debugger 打断点调试下,调用刷新后,肯定还会触发onCustomRefre ...

没事了 ,我再试试
回复 支持 反对

使用道具 举报

发表于 2018-10-30 14:32:02 | 显示全部楼层
苦瓜很甜 发表于 2018-10-30 14:25
现在有一个问题是,为什么我用派发事件的方法不能刷新数据呢

异步请求
http://docs.wex5.com/wex5-ui-question-list-2169/

正确做法是 接管  onAfterRefresh

首先,派发事件事件有没有触发,  刷新数据  后 数据有没有改变 ,可以debugger调试看下!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

56

主题

245

帖子

535

积分

高级会员

Rank: 4

积分
535
QQ
 楼主| 发表于 2018-10-30 15:06:15 | 显示全部楼层
liangyongfei 发表于 2018-10-30 14:32
异步请求
http://docs.wex5.com/wex5-ui-question-list-2169/

是怎么个写法呢?
                   var ajaxTimeOut = $.ajax({
                        "global" : false, // 此处设为false,即可
                        "type" : "post",
                        "async" : true,
                        "data" : soap,
                        "dataType" : "text",
                        "url" : url,
                        "timeout" : 10000,// 响应时间
                        "success" : function(data) {
                                // alert("success");
                                // debugger;
                                // 解析返回值
                                if (typeof ActiveXObject != 'undefined' && typeof GetObject != 'undefined') {
                                        var doc = new ActiveXObject('Microsoft.XMLDOM');
                                        var aaa = doc.loadXML(data);
                                }

                                if (typeof DOMParser != 'undefined') {
                                        var xml = (new DOMParser()).parseFromString(data, 'text/xml');
                                        var jsonString = xml.documentElement.textContent;

                                        // json解析结果
                                        var jsonObj = new Function("return" + jsonString)();
                                        var result = jsonObj.success;
                                        if (result == "true") {
                                                justep.Util.hint("取消订单成功", {
                                                        "type" : "warning",
                                                        // "delay" : 100,
                                                        "position" : "bottom",
                                                });
                                        }
                                }
                                self.comp('orderData').doRefreshAfter();
                                self.comp('orderFoodsData').doRefreshAfter();
                        }
//                        "complete" : function() {
//                                self.comp('orderData').refreshData();
//                                self.comp('orderFoodsData').refreshData();
//                        }
                });
                 self.comp('orderData').onAfterRefresh();
                 self.comp('orderFoodsData').onAfterRefresh();
能不能给改一下
回复 支持 反对

使用道具 举报

发表于 2018-10-30 15:10:48 | 显示全部楼层
苦瓜很甜 发表于 2018-10-30 15:06
是怎么个写法呢?
                   var ajaxTimeOut = $.ajax({
                        "global" : false, // 此处设为fal ...

参考我发的链接
成功回调中执行
data.doRefreshAfter()
就可以了


为什么要用异步呢?同步不好吗?

data对象的定义,定义在最外层就可以了,不用每次都调用 self.comp('orderData')  获取组件对象
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

56

主题

245

帖子

535

积分

高级会员

Rank: 4

积分
535
QQ
 楼主| 发表于 2018-10-30 15:52:10 | 显示全部楼层
liangyongfei 发表于 2018-10-30 15:10
参考我发的链接
成功回调中执行
data.doRefreshAfter()

var ajaxTimeOut = $.ajax({
                        "global" : false, // 此处设为false,即可
                        "type" : "post",
                        "async" : true,
                        "data" : soap,
                        "dataType" : "text",
                        "url" : url,
                        "timeout" : 10000,// 响应时间
                        "success" : function(data) {
                                // alert("success");
                                // debugger;
                                // 解析返回值
                                if (typeof ActiveXObject != 'undefined' && typeof GetObject != 'undefined') {
                                        var doc = new ActiveXObject('Microsoft.XMLDOM');
                                        var aaa = doc.loadXML(data);
                                }

                                if (typeof DOMParser != 'undefined') {
                                        var xml = (new DOMParser()).parseFromString(data, 'text/xml');
                                        var jsonString = xml.documentElement.textContent;

                                        // json解析结果
                                        var jsonObj = new Function("return" + jsonString)();
                                        var result = jsonObj.success;
                                        if (result == "true") {
                                                justep.Util.hint("取消订单成功", {
                                                        "type" : "warning",
                                                        // "delay" : 100,
                                                        "position" : "bottom",
                                                });
                                        }
                                }
                                self.comp('orderData').doRefreshAfter();
                                self.comp('orderFoodsData').doRefreshAfter();
                        },
                });
我是这么写的咋都不进onCustomRefresh方法呢
回复 支持 反对

使用道具 举报

发表于 2018-10-30 15:55:56 | 显示全部楼层
苦瓜很甜 发表于 2018-10-30 15:52
var ajaxTimeOut = $.ajax({
                        "global" : false, // 此处设为false,即可
                        "type" : "post",

首先你需要调用 data.refreshData()
这个时候会触发  onCustomRefresh 事件的
然后你在成功回调中,执行doRefreshAfter 方法, 就会模认显示到第一行数据了
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

56

主题

245

帖子

535

积分

高级会员

Rank: 4

积分
535
QQ
 楼主| 发表于 2018-10-30 16:15:23 | 显示全部楼层
liangyongfei 发表于 2018-10-30 15:55
首先你需要调用 data.refreshData()
这个时候会触发  onCustomRefresh 事件的
然后你在成功回调中,执行d ...

var ajaxTimeOut = $.ajax({
                        "global" : false, // 此处设为false,即可
                        "type" : "post",
                        "async" : true,
                        "data" : soap,
                        "dataType" : "text",
                        "url" : url,
                        "timeout" : 10000,// 响应时间
                        "success" : function(data) {
                                // alert("success");
                                // debugger;
                                // 解析返回值
                                if (typeof ActiveXObject != 'undefined' && typeof GetObject != 'undefined') {
                                        var doc = new ActiveXObject('Microsoft.XMLDOM');
                                        var aaa = doc.loadXML(data);
                                }

                                if (typeof DOMParser != 'undefined') {
                                        var xml = (new DOMParser()).parseFromString(data, 'text/xml');
                                        var jsonString = xml.documentElement.textContent;

                                        // json解析结果
                                        var jsonObj = new Function("return" + jsonString)();
                                        var result = jsonObj.success;
                                        if (result == "true") {
                                                justep.Util.hint("取消订单成功", {
                                                        "type" : "warning",
                                                        // "delay" : 100,
                                                        "position" : "bottom",
                                                });
                                        }
                                }
                               orderData.doRefreshAfter();
                               orderFoodsData.doRefreshAfter();
                        }
                });
                orderData.refreshData();
                orderFoodsData.refreshData();
这样写吗?不行啊
回复 支持 反对

使用道具 举报

发表于 2018-10-30 16:24:16 | 显示全部楼层
苦瓜很甜 发表于 2018-10-30 16:15
var ajaxTimeOut = $.ajax({
                        "global" : false, // 此处设为false,即可
        ...

你是在哪儿调用refreshData 方法的
自己debugger调试下,执行 refreshData 的时候,有没有执行到  onCustomRefresh  呢??
ajax请求应该写在 onCustomRefresh   事件中才对的!

或者data组件如果 autoLoad为true的话也会自动触发执行的
类似做法比如
/UI2/demo/acc_data/list.w


你先使用同步执行试试吧,  在成功回调中执行 loadData数据  ,

成功后,可以改成异步,再执行下doRefreshAfter 就行的

如果不能成功,建议先使用同步执行吧
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-1 23:23 , Processed in 0.061728 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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