<!-- 背景: 在做页面的过程中需要在页面列表里面添加数据,但是添加之后需要手动刷新页面才会出现添加的数据-->
方法1,通过对window方法绑定,实现回调刷新
代码如下:
mounted(){
// 把vue组件的methods方法绑定到window
window['search'] = ()=> {this.search()};
}
方法2,通过添加页面监听实现
// 添加页面监听器,监听宿舍选择页面发送的信息
window.addEventListener(‘message’,this.listenHouseSearch);
},
/**
*监听宿舍选择的窗口返回的数据
*/
listenHouseSearch(e){
const { data } = e;
//检测当前数据是由宿舍选择页面传来的
if(data && data.action === messageAction){
const { result } = data;
//给当前行的房间下拉菜单赋房间信息供用户选择
this.setCurrRowRoom(result,this.currTableIndex);
}
},子页面向父页面发送消息
window.opener.postMessage({
action: messageAction,
result: this.currRoomList,
})
// 接收到数据后,清除监听器
window.removeEventListener(‘message’,this.listenHouseSearch);
方法3:通过监听打开页面是否关闭,进行刷新
export default {
methods: {
/**
* 打开页签并监听关闭
* @param {*} windowName 父页面名称
* @param {*} path 路由
* @param {*} params 参数
* @param {*} callback 关闭回调
*/
openForm: function(windowName, path, params, callback) {
window.name= windowName;
const routeUrl = this.$router.resolve({
path: path,
query: params
});
//监听window页面关闭
const tool = window.open(routeUrl.href, "_blank");
const loop = setInterval(item => {
if (tool.closed) {
clearInterval(loop);
if (callback) {
callback();
}
}
}, 1000);
}
}
}
版权声明:本文为lx180108105原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。