[前端][fmui] 返回页面数据不刷新的处理方案
问题现象
【问题一】EJS环境返回不刷新
【问题二】非EJS环境返回不刷新
非ejs环境使用ejs.page.open或者使用epointm.openPage打开新页面,返回页面数据不刷新
示例知识库
【问题三】个性化控件使用epointm.refresh(id)不刷新
示例知识库
解决方案
【问题一】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是否对控件重新赋值、渲染。