Computed property “activeTabId” was assigned to but it has no setter.
意思是:‘’已将计算属性“activeTabId”分配给,但它没有setter。‘’
activeTabId是通过vuex 来向模块中state取出来的,首先在 数据双向绑定的时候将 v-model=‘activeTabId’ 改为 :value=‘activeTabId’ ,如下:
<portal-tabs
ref="tabs"
:value="activeTabId"
:panes="tabs"
@tab-remove="removeTabAsync"
@tab-click="clickTabAsync"
@tab-contextmenu="handleTabContextmenu" />
问题 解决了 但是 在右键关闭所有的时候 ,还会出现这个报错,我觉得是因为我应该将 vuex中的 state 的 activeTabId进行更改。
。。。
<template>
<v-contextmenu-item @click.native.stop="(vm,ev)=>{closeTabs(ev,1)}">
关闭其他
</v-contextmenu-item>
</template>
。。。
<script>
import { createNamespacedHelpers } from 'vuex'
const { mapState, mapActions } = createNamespacedHelpers('manager')
methods: {
...mapActions(['setCurrentAsync' ]),
closeTabs (ev, action) {
const data = this.tabContextMenuData
if (!data) return
const tabId = data.id
switch (action) {
case 0: // close self
this.removeTabAsync(tabId, ev)
break
case 1: // close other
for (let i = this.tabs.length - 1; i >= 0; i--) {
const tab = this.tabs[i]
if (tab.id !== tabId) {
this.tabs.splice(i, 1)
}
}
// this.activeTabId = tabId
this.setCurrentAsync(tabId)
// this.updateTabsView()
break
case 2: // close all
while (this.tabs.length) this.tabs.pop()
// this.activeTabId = null
this.setCurrentAsync(null)
// this.updateTabsView()
break
}
},
}
</script>
问题搞定。希望对你有帮助。