再打開“新建表單”的頁面是,點擊刷新網頁後,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()
}