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

QQ登录

只需一步,快速开始

查看: 1770|回复: 4

[处理中3] 版主请进:看看是不是bug

[复制链接]

25

主题

57

帖子

233

积分

中级会员

Rank: 3Rank: 3

积分
233
QQ
发表于 2018-5-10 14:56:10 | 显示全部楼层 |阅读模式
本帖最后由 zhoubincibn 于 2018-5-10 15:12 编辑

场景:

所有页面都是通过justep.Shell.showPage("**")打开的。

访问顺序:  列表页A--详情页B(传参数)--购物车C;  然后通过 justep.Shell.closePage();  效果均正常。

访问顺序:  列表页A--详情页B(传商品参数,第二个页面)--购物车C--详情页B(同页面,只是商品参数变了);  然后通过左上角按钮  justep.Shell.closePage();逐步关闭页面。  到了  详情页B(第二个页面) 参数 undefined。  但是用安卓物理返回键不存在这情况。

求问解决思路。

我思路与问题:
思路1:最初是通过判断 undefined 就继续关闭,绕开 有问题的B页面, 但是之前有连续closePage 白屏问题,不得不修改基类加入1秒延时,这就导致问题页面显示1秒后才能继续关闭,用户体验不好。  
        Model.prototype.modelParamsReceive = function(event){
                try{
                        if (typeof(this.params.goodsID) == "undefined")
                        {
                                setTimeout(function() {
                                        justep.Shell.closePage();
                                }, 1000); return;
                        }

…………………………

思路2: 通过 localStorage 保存 B页面的商品参数,但是发现如果是固定的场景2,这样做行,但是要是这情况, A页面-B详情-C页面购物车-B详情(另一个商品ID)-购物车C-B详情(另外ID)…………  连续closePage过程中,就无法确定是哪个ID参数了。
发表于 2018-5-10 15:02:13 | 显示全部楼层
你是怎么传参的??是url参数还是  复杂参数??
http://docs.wex5.com/page-interaction/

执行this.close()  关闭页面试试, 如果B 页面关闭了, 就不应该还能回到 第二个页面 B 的
因为页面是会重用的才对!

如果是url 参数,你看下url上是否正确??
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

25

主题

57

帖子

233

积分

中级会员

Rank: 3Rank: 3

积分
233
QQ
 楼主| 发表于 2018-5-10 15:07:31 | 显示全部楼层
本帖最后由 zhoubincibn 于 2018-5-10 15:11 编辑
liangyongfei 发表于 2018-5-10 15:02
你是怎么传参的??是url参数还是  复杂参数??
http://docs.wex5.com/page-interaction/

我都是通过:
//商品点击事件
        Model.prototype.listClick = function(event) {
                var data = this.comp("goodsData");
                justep.Shell.showPage("product", {
                        goodsID : data.getValue("fShopID"),
                        shopID : data.getValue("fTitle")
                });
        };

我又在问题中补充了思路和问题,麻烦你看看

此外我都是左上角按钮点击事件中justep.Shell.closePage();,触发  不是 this.close()
       //关闭事件
       Model.prototype.closepage = function(event){
                setTimeout(function() {
                        justep.Shell.closePage();
                }, 300);
        };


版主能否讲讲this.close()
我这样写没有任何效果
       //关闭事件
       Model.prototype.closepage = function(event){
                setTimeout(function() {
                       this.close();
                }, 300);
        };


回复 支持 反对

使用道具 举报

发表于 2018-5-10 15:15:50 | 显示全部楼层
zhoubincibn 发表于 2018-5-10 15:07
我都是通过:
//商品点击事件
        Model.prototype.listClick = function(event) {

回调函数中 不能直接使用this
需要定义变量
http://docs.wex5.com/wex5-ui-question-list-2160
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

发表于 2018-5-10 15:21:27 | 显示全部楼层
我看了,你是url传参 ,url 传参,可能会打开新页面
那建议你

  1. var params = {
  2.             data: {
  3.                goodsID : data.getValue("fShopID"),
  4.                         shopID : data.getValue("fTitle")
  5.             }
  6.         }
  7.         justep.Shell.showPage('product', params)
复制代码


通过这种传参方式,这样后面Url ,前边第二个页面就不存在了,因为url 一样,就会重用页面的!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-26 05:20 , Processed in 0.066494 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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