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

QQ登录

只需一步,快速开始

查看: 6293|回复: 22

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

[复制链接]

56

主题

245

帖子

535

积分

高级会员

Rank: 4

积分
535
QQ
发表于 2018-10-16 17:16:11 | 显示全部楼层 |阅读模式
我用shell跳转后为什么data不会刷新展示出增加后的数据,我是提交订单,然后到了订单展示页面,这时应该会有新的订单展示出来
this.generateOrder("unpay");
                                        justep.Shell.loadPage("$UI/test/main.w");
                                        justep.Shell.fireEvent("onContent3Content", {});
                                        justep.Shell.fireEvent("refreshOrderData", {});
                                        // justep.Shell.showMainPage();
                                        // var url = require.toUrl("./main.w");
                                        // justep.Shell.showPage(url);
                                        justep.Shell.showPage("main");
发表于 2018-10-29 16:08:21 | 显示全部楼层
你是调用的data.refreshData() 吗??只有调用这个方法加载的数据才会显示第一行数据的!
否则就算加载数据了也默认没有显示行的
http://docs.wex5.com/wex5-ui-question-list-2071

你先调试一下 ,data.count()  是有多少行数据呢?
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

56

主题

245

帖子

535

积分

高级会员

Rank: 4

积分
535
QQ
 楼主| 发表于 2018-10-30 09:13:01 | 显示全部楼层
liangyongfei 发表于 2018-10-29 16:08
你是调用的data.refreshData() 吗??只有调用这个方法加载的数据才会显示第一行数据的!
否则就算加载数据 ...

我在loadData 加了一个data.refreshData()就好了,这也是当前行不存在的原因吗?
回复 支持 反对

使用道具 举报

发表于 2018-10-30 10:25:24 | 显示全部楼层
苦瓜很甜 发表于 2018-10-30 09:13
我在loadData 加了一个data.refreshData()就好了,这也是当前行不存在的原因吗? ...

如果调用data.refreshData()
你应该是在 onCustomRefresh 事件中调用 loadData 加载数据才对的

而不是在 loadData 后面调用 refreshData

需要理解的是,data.refreshData() 才是标准的刷新数据方法调用
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

56

主题

245

帖子

535

积分

高级会员

Rank: 4

积分
535
QQ
 楼主| 发表于 2018-10-30 10:50:41 | 显示全部楼层
liangyongfei 发表于 2018-10-30 10:25
如果调用data.refreshData()
你应该是在 onCustomRefresh 事件中调用 loadData 加载数据才对的

我是在onCustomRefresh 中用loadData加载的数据,但是修改数据后只有在onCustomRefresh 中的loadData后加一个data.refreshData()数据才会展示出来,加self.comp('storeData').first();不能够展示出数据来
回复 支持 反对

使用道具 举报

发表于 2018-10-30 11:20:53 | 显示全部楼层
苦瓜很甜 发表于 2018-10-30 10:50
我是在onCustomRefresh 中用loadData加载的数据,但是修改数据后只有在onCustomRefresh 中的loadData后加 ...

onCustomRefresh 中的loadData后加一个data.refreshData()
就又会重新触发刷新的,这样岂不是死循环了??

触发刷新的不是同一个data
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

56

主题

245

帖子

535

积分

高级会员

Rank: 4

积分
535
QQ
 楼主| 发表于 2018-10-30 11:28:05 | 显示全部楼层
liangyongfei 发表于 2018-10-30 11:20
onCustomRefresh 中的loadData后加一个data.refreshData()
就又会重新触发刷新的,这样岂不是死循环了? ...

但是我在别的地方调用refreshData不能刷新,添加数据后数据不能展示,只有添加在onCustomRefresh里面加refreshData数据才能展示出来,我也很奇怪,到底是哪里的问题
回复 支持 反对

使用道具 举报

发表于 2018-10-30 11:51:55 | 显示全部楼层
苦瓜很甜 发表于 2018-10-30 11:28
但是我在别的地方调用refreshData不能刷新,添加数据后数据不能展示,只有添加在onCustomRefresh里面加re ...

你确定是调用的同一个data组件的刷新吗??
如果这个data组件接管了 onCustomRefresh 事件
调用data.refreshData()  肯定会触发  onCustomRefresh 事件的,你先试试这个对吗??

要不就是没接管事件,要不就是   不是一个data组件吧
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

56

主题

245

帖子

535

积分

高级会员

Rank: 4

积分
535
QQ
 楼主| 发表于 2018-10-30 12:47:51 | 显示全部楼层
liangyongfei 发表于 2018-10-30 11:51
你确定是调用的同一个data组件的刷新吗??
如果这个data组件接管了 onCustomRefresh 事件
调用data.refr ...

data组件是这么写的,
<div component="$UI/system/components/justep/data/data" autoLoad="false"
      xid="orderData" idColumn="orderId" onCustomRefresh="orderDataCustomRefresh">
      <column label="订单id" name="orderId" type="String" xid="xid12"/>  
      <column label="手机号码" name="phoneNumber" type="String" xid="xid12"/>  
      <column label="店铺名称" name="shopName" type="String" xid="xid13"/>  
      <column label="订单号" name="orderNumber" type="String" xid="xid13"/>  
      <column label="预约时间" name="bespeakTime" type="String" xid="xid13"/>  
      <column label="下单时间" name="orderTime" type="String" xid="xid13"/>  
      <column label="商品数量" name="commodityQuantity" type="String" xid="xid13"/>  
      <column label="菜品总价" name="total" type="String" xid="xid13"/>  
      <column label="店铺图标" name="storeImage" type="String" xid="xid13"/>  
      <column label="订单状态" name="orderStatus" type="String" xid="xid13"/>  
      <column label="支付状态" name="orderState" type="String" xid="xid13"/>  
      <column label="是否是已取消" name="isCancel" type="String" xid="xid13"/>  
      <column label="店铺付款方式" name="settleType" type="String" xid="xid13"/>  
      <column label="" name="payButtonFlag" type="String" xid="xid13"/>  
      <column label="下单人" name="orderPerson" type="String" xid="xid13"/>  
      <column label="实收" name="realMoney" type="String" xid="xid13"/>
    </div>
onCustomRefresh方法:
Model.prototype.orderDataCustomRefresh = function(event) {
                // debugger
                var userId = localStorage.getItem("userId");

                var self = this;
                // this.showLoading();
                var impl = "WxOrder";// url名
                var url = globlaData.loadWebUrl(globlaData.ip(), globlaData.port(), impl);

                var method = "GetOrder";
                var params = {};
                var paramJson = {
                        userId : userId
                };

                var paramJsonString = JSON.stringify(paramJson);
                var soap = globlaData.loadSoap(method, paramJsonString);
                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;
                                        self.orderArray = [];
                                        for (var i = 0; i < result.length; i++) {
                                                var phoneNumber = result.phoneNumber;
                                                var shopName = result.shopName;
                                                var orderNumber = result.orderNumber;
                                                var bespeakTime = result.bespeakTime;
                                                var orderTime = result.orderTime;
                                                var commodityQuantity = result.commodityQuantity;
                                                var total = result.total;
                                                var storeImage = result.storeImage;
                                                var orderStatus = result.orderStatus;
                                                var orderId = result.orderId;
                                                var orderState = result.orderState;
                                                var isCancel = result.isCancel;
                                                var settleType = result.settleType;
                                                var payButtonFlag = result.payButtonFlag;
                                                var orderPerson = result.orderPerson;
                                                var realMoney = result.realMoney;
                                                // 将取到的结果放到orderArray中
                                                self.orderArray.push({
                                                        orderId : orderId, // 订单id
                                                        phoneNumber : phoneNumber,// 手机号码
                                                        shopName : shopName, // 店铺名称
                                                        orderNumber : orderNumber,// 订单号
                                                        bespeakTime : bespeakTime,// 预约时间
                                                        orderTime : orderTime, // 下单时间
                                                        commodityQuantity : commodityQuantity,// 商品数量
                                                        total : total, // 菜品总价
                                                        storeImage : storeImage,// 店铺图标
                                                        orderStatus : orderStatus,
                                                        orderState : orderState,
                                                        isCancel : isCancel,
                                                        settleType : settleType,
                                                        payButtonFlag : payButtonFlag,
                                                        orderPerson : orderPerson,
                                                        realMoney : realMoney
                                                // 订单状态
                                                })
                                        }
                                        // self.comp('orderData').clear();
                                        // 为orderData赋值
                                        self.comp('orderData').loadData(self.orderArray);
//                                        self.comp('orderData').first();// 给orderData一个当前行
                                        self.comp('orderData').refreshData();
//                                        justep.Util.hint("ccc", {
//                                                "type" : "warning",
//                                                // "delay" : 100,
//                                                "position" : "bottom",
//                                        });
                                        // var count = self.comp("orderData").count();
                                        // alert(count+"**"+self.orderArray);
                                        // setTimeout("alert(222)",5000);
                                        // alert(222);
                                }
                        }
                });
        }
在方法中调用refreshData
Model.prototype.cancelBtnClick = function(event) {

                var userId = localStorage.getItem("userId");// 获取用户id

                var row = event.bindingContext.$object;
                // var data = this.comp("orderData");
                var orderId = row.val("orderId");// 获取选中订单的订单id

                var self = this;
                // this.showLoading();
                var impl = "WxOrder";// url名
                var url = globlaData.loadWebUrl(globlaData.ip(), globlaData.port(), impl);

                var method = "UpdateOrder";
                var params = {};
                var paramJson = {
                        orderid : orderId,
                        state : "cancel",
                        userid : userId
                // 传参 订单号
                };

                var paramJsonString = JSON.stringify(paramJson);
                var soap = globlaData.loadSoap(method, paramJsonString);
                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').refreshData();
                self.comp('orderFoodsData').refreshData();
这样写没问题吧,但就是不刷新
回复 支持 反对

使用道具 举报

56

主题

245

帖子

535

积分

高级会员

Rank: 4

积分
535
QQ
 楼主| 发表于 2018-10-30 12:50:04 | 显示全部楼层
liangyongfei 发表于 2018-10-30 11:51
你确定是调用的同一个data组件的刷新吗??
如果这个data组件接管了 onCustomRefresh 事件
调用data.refr ...

我要实现的功能就是点击取消订单时订单状态改变,或者添加订单时订单能够及时展示出来
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-21 09:45 , Processed in 0.057143 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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