mui 子页面返回父页面并执行父页面的方法

在子页面执行的方法

if (window.plus) {
	plusready();
} else {
	document.addEventListener("plusready", plusready,false);
}
function plusready() {
	var view = plus.webview.currentWebview().opener();
    //传递参数
	mui.fire(view, 'select', {
        inputVal: "1",
    });
	mui.back();
} 

父页面执行的方法

function fun1(e) {
    //这是在父页面接收子页面传过来的参数
    //var val = e.detail.inputVal;
    login();
}
//自定义窗体事件  名称 要和b页面定义的 事件名称一致   
window.addEventListener('select', fun1);

我找到了一个插件可以返回任意父页面,并执行自定义事件

//5+功能封装
var plusCommon = {
    /**
    * 从当前页面pop到目标页面
    * @param {String} targetId 目标页面ID
    * @param {Boolean} isReload 是否让目标页面执行reload方法刷新(全局刷新)
    * @param {String} eventName 自定义事件名称,如果存在,就触发(可以实现局部刷新)
    * @param {Object} data json格式的数据(自定事件参数)
    */
    popToTarget:function(targetId, isReload, eventName, data){
        //获取目标页面
        var target = plus.webview.getWebviewById(targetId);
        if (!target) {
            console.log("目标页面不存在!");
            return;
        }
        //获取当前页面
        var current = plus.webview.currentWebview();
        if (current === target) {
            console.log("目标页面是当前页面!");
            return;
        }
        //将要关闭的页面
        var pages = new Array(current);
        //父级页面
        var opener = current.opener();
        while (opener){
            if (opener === target) {//找到了目标页面
                //是否需要触发目标页面的自定义事件
                if (eventName) {
                    if (isReload) {//全局刷新和局部刷新(自定义事件)同时存在
                        //在全局刷新完成之后再触发目标页面的自定义事件
                        target.onloaded = function(){
                            mui.fire(target, eventName, data);
                        };
                    } else {
                        mui.fire(target, eventName, data);
                    }
                }
                //是否需要全局刷新目标页面
                if (isReload) {
                    target.reload();
                }
                //关闭目标页面的所有子级页面pages
                pages.map(function(page){
                    page.close();
                });
                return;
            }
            pages.push(opener);
            opener = opener.opener();
        }
        //没有找到目标页面
        console.log("目标页面不是当前页面的祖先!");
    }
}

用法是 plusCommon.popToTarget("你要返回的父页面的id", 是否刷新父页面, "自定义的方法名", {});

最后的是参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值