7***@qq.com
7***@qq.com
  • 发布:2018-02-01 18:20
  • 更新:2021-05-07 19:45
  • 阅读:4510

mui back()返回点击两次或者更多才会返回上一页

分类:MUI
mui

详细问题描述
[内容]
点击保存调接口然后返回上一页,需要点击多次
重现步骤
[步骤]
[结果]
[期望]
点击子页面保存,提交数据,成功之后刷新父页面,然后调用mui.back()方法返回父页面,需要点击多次保存才会返回
运行环境 Android
[系统版本] Android7.1
[浏览器版本]
[IDE版本]
[mui版本]

附件
[代码片段]
[安装包]
capajax({
url:url+"/ApiHouse/TxRelateInfo",
data:{
CmdContent:JSON.stringify(cmd
)
},
success:function(data){
if(data.returncode>0){
**var i = plus.webview.getWebviewById('homePage'); //父页面webview对象
mui.fire(i, 'refresh
',{ //刷新父页面
type:2
});
mui.back(); //返回父页面,这里接口调成功之后 并不会返回,需要点击2-3次才会返回**
mui.toast(data.return_msg);
}
}
})
联系方式
[QQ]
[电话]

2018-02-01 18:20 负责人:无 分享
已邀请:
回梦無痕

回梦無痕 - 暂停服务

大哥。你把你的mui.back(); 放到ajax回调里,肯定会返回延迟的。。
你程序的逻辑就是,点击返回键,请求接口,等待接口请求成功之后再执行返回动作。
延迟就在于“请求接口,等待接口请求成功”这段时间。
那么就会出现,点击好像没反应似的现象。。。
并且,由于ajax是异步,这段延迟的过程中,你再次点击返回的话,会再次请求接口的。。。

  • 7***@qq.com (作者)

    但是我需要点击确定掉接口之后再返回上一页啊,不然应该怎么做,给个思路吧···

    2018-02-01 18:31

  • 回梦無痕

    回复 7***@qq.com:把mui.back();放外面,直接返回。

    2018-02-01 18:33

  • 7***@qq.com (作者)

    回复 回梦無痕:这样父页面就没办法刷新了啊,没有提交上的话刷新就没意义了

    2018-02-01 18:35

  • 7***@qq.com (作者)

    回复 7***@qq.com:我直接返回然后再回调里刷新父页面么,子页面关了之后代码还会执行么

    2018-02-01 18:38

  • 奔跑的蘑菇

    回复 7***@qq.com:你如果担心数据没有提交成功就返回的问题,你可以这样,写一个全局flag,比如说初始是true,当你请求接口的时候改变为false,根据你的业务需求,比如等请求成功之后,刷新完父页面再改变flag状态,然后在你的mui.back();中判断一下你的flag状态,如果是true的时候才让返回父页面;

    不过还有另外一种方法,就是你可以做一个蒙版,当请求数据的时候显示蒙版,请求成功之后再取消掉,plus.nativeUI.showWaiting();-显示,plus.nativeUI.closeWaiting();-隐藏,这样也可以避免你提交数据的时候按返回键返回父页面

    2018-02-02 09:38

  • 回梦無痕

    回复 7***@qq.com:默认的返回动画有200~300毫秒,在页面关闭前,可以做很多事情了。而且, 你的返回提交数据刷新上一页根本就不应该放到返回事件的做ajax请求,你把ajax放在上一页页中,返回上一页的时候,用自定义事件把参数传递过去,在上一页中做ajax请求刷新页面数据。动画的200~300毫秒,足够上一页做ajax刷新数据了,如果你的接口很慢,那就show一个loading的层,等ajax刷新完之后关闭这个loading层就可以了

    2018-02-02 10:38

7***@qq.com

7***@qq.com (作者)

不管是直接在接口成功回调里写Mui.fire()还是在mui.init里面写beforeback触发父页面刷新事件,都需要2-3次才会执行,偶尔有一次会立马返回,大多数都要点好几次才返回

7***@qq.com

7***@qq.com (作者)

父页面刷新事件执行了,但是列表并不会重新拼接,但是重新调试就又能拼接了,及其不稳定。。是我代码问题么。

7***@qq.com

7***@qq.com (作者)

感觉不像,因为有时候是没问题的也很快,但是更多时候各种不执行,要么返回不执行,要么刷新了列表不拼接

奔跑的蘑菇

奔跑的蘑菇

不明白你为啥要把返回监听放在请求接口里

  • 7***@qq.com (作者)

    因为接口调成功再刷新列表,不然刷新就没意义了啊

    2018-02-06 19:19

  • 奔跑的蘑菇

    回复 7***@qq.com:我说的是返回监听,而不是你说的刷新问题,你混淆了,解决了吗

    2018-02-08 10:25

2***@qq.com

2***@qq.com

mui有个mui-disable类,第一次提交后按钮样式增加mui-disable类。

晓梦轻寒

晓梦轻寒

在公共js文件中,写上如下:

       //解决返回按钮需要点击两次才能返回的异常问题  
    $(".mui-action-back").on("tap", function() {  
        $(".mui-action-back").css('text-decoration','none');  
        plus.webview.currentWebview().close();  
    });

该问题目前已经被锁定, 无法添加新回复