再打开“新建表单”的页面是,点击刷新网页后,tab会出现两个新建页面,发布完成后自动关闭,只能关闭一个。刚才输入的内容会保存在另一个新建页面里面,用户不知道的情况下,就会再点一次保存,就出现了两次提交车现象。
有没有人遇到过?求指教。
新建页面,不在左边的路由中显示,通过发布页面里面的“新建”按钮弹出。
<Button @click="handleOpenCreate(0)" ><Icon type="md-add" /> 新建</Button>
handleOpenCreate (status) {
this.$router.push({
name: 'tickets_create',
params: {
curStatus: status
}
})
},
这个问题,自己找到了解决办法。
------
通过代码跟踪发现,每次刷新页面,都会从localStorage.tagNaveList中获取tablist,所以大胆的去把它去重复,结果问题解决。现在刷新后,重复的“新建”页面就没有了,解决办法如下:
src/components/main/main.vue
mounted () {
/**
* @description 初始化设置面包屑导航和标签导航
*/
// 新增代码开始,解决重复的新建页面问题
var arr = JSON.parse(window.localStorage.getItem('tagNaveList'))
var newArr = [];
var obj = {};
for (var i = 0; i < arr.length; i++) {
if (!obj[arr[i].name]) {
newArr.push(arr[i]);
obj[arr[i].name] = true;
}
}
window.localStorage.setItem('tagNaveList', JSON.stringify(newArr))
// 新增代码结束
this.setTagNavList()
this.setHomeRoute(routers)
const { name, params, query, meta } = this.$route
this.addTag({
route: { name, params, query, meta }
})
this.setBreadCrumb(this.$route)
// 设置初始语言
this.setLocal(this.$i18n.locale)
// 如果当前打开页面不在标签栏中,跳到homeName页
if (!this.tagNavList.find(item => item.name === this.$route.name)) {
this.$router.push({
name: this.$config.homeName
})
}
// 获取未读消息条数
this.getUnreadMessageCount()
}
}
------
上面的方法还是有点问题,当打开“新建”后,直接刷新,还是会出现两个“新建”页面,继续跟踪代码,发现addTag(),备注掉后,问题貌似解决了。上面去重复的代码可以保留,先备注吧。
mounted () {
/**
* @description 初始化设置面包屑导航和标签导航
*/
// 新增代码开始,解决重复的新建页面问题 -失败, 把下面的addTag()备注掉,就OK了
// var arr = JSON.parse(window.localStorage.getItem('tagNaveList'))
// var newArr = [];
// var obj = {};
// for (var i = 0; i < arr.length; i++) {
// if (!obj[arr[i].name]) {
// newArr.push(arr[i]);
// obj[arr[i].name] = true;
// }
// }
// window.localStorage.setItem('tagNaveList', JSON.stringify(newArr))
// 新增代码结束
this.setTagNavList()
this.setHomeRoute(routers)
const { name, params, query, meta } = this.$route
//这个addTag是导致 新建页面重复的bug
// this.addTag({
// route: { name, params, query, meta }
// })
this.setBreadCrumb(this.$route)
// 设置初始语言
this.setLocal(this.$i18n.locale)
// 如果当前打开页面不在标签栏中,跳到homeName页
if (!this.tagNavList.find(item => item.name === this.$route.name)) {
this.$router.push({
name: this.$config.homeName
})
}
// 获取未读消息条数
this.getUnreadMessageCount()
}