需求:路由跳转的时候,他是通过window.open新开了一个网页去跳转的,但新(B)页面会有一些操作,改变了A页面的数据,但B页面并不能关闭回到A,需要A同步请求接口刷新数据。
解决方法一:我同事告诉我用vuex,但没操作成功,好像是B页面和A页面不是一个vue实例了,所以根本不行
解决方法二:我想到了用本地存储localStorage,虽然俩页面可以同步看到localStorage的变化,但监听是个问题,最后在网上解决了。
在A页面:
window.addEventListener("storage", function (e) {
alert(e.newValue);
//这个e.newValue 就能看到改变的localStorage的新值
});
还有一个没有测试的方法,应该也是可以的,用了简洁的,就没有用繁琐的:
//通过再次设置setItem
var orignalSetItem = localStorage.setItem;
localStorage.setItem = function(key,newValue){
var setItemEvent = new Event("setItemEvent");
setItemEvent.newValue = newValue;
window.dispatchEvent(setItemEvent);
orignalSetItem.apply(this,arguments);
}
window.addEventListener("setItemEvent", function (e) {
alert(e.newValue);
});
localStorage.setItem("name","wang");