[前端][fmui] 返回页面数据不刷新的处理方案

问题现象

【问题一】EJS环境返回不刷新

【问题二】非EJS环境返回不刷新

​ 非ejs环境使用ejs.page.open或者使用epointm.openPage打开新页面,返回页面数据不刷新

示例知识库open in new window

【问题三】个性化控件使用epointm.refresh(id)不刷新

示例知识库open in new window

解决方案

【问题一】EJS环境返回不刷新

方法一:使用ejs.page.open和epointm.openPage打开页面都有回调函数,将刷新方法写入回调函数中。注意:此方法右滑返回不会进入success回调

ejs.page.open({
    pageUrl: "./ejs_demo_v3_simple.html",
    data: {
        key1: 'value1'
    },
    success: function(result) {
		/**
        *	触发刷新
        **/
    },
    error: function(error) {}
});

方法二:跳转前使用ejs.event.registerEvent注册事件监听resume事件,触发时机当页面重新可见并可以交互时,将刷新方法写入回调函数中。

ejs.event.registerEvent({
    key: 'resume',
    success: function (result) {
        /**
        *	触发刷新
        **/
    },
    error: function (error) {}
});
epointm.openPage('测试', './detail.html', window.onSearchCallback);

// 页面回调函数(可选)
window.onSearchCallback = function () {
    /**
     *	触发刷新
     **/
};

【问题二】非EJS环境返回不刷新

通过监听pageshow事件,并且判断页面是通过回退进入页面时触发刷新

window.addEventListener('pageshow', function(e) {
    //if(ejs.os.ios){//如果只有ios环境不刷新需要加上此判断
    	//判断页面为通过后退进入的时
        if (event.persisted || window.performance && window.performance.navigation.type == 2) {
            /**
             *	触发刷新
             **/
        }
    //}
});

【问题三】个性化控件使用epointm.refresh(id)不刷新

个性化控件使用epointm.refresh(id)不刷新:需要排查个性化控件的setData方法,重新指向setData是否对控件重新赋值、渲染。

最后更新时间::
贡献者: wyanqd