在做项目中遇到一个需求,当用户处于某种状态时,点击导航菜单的某项,不能切换,并且弹出消息提示.
例如,我在新建状态下,点击了其中一项,不能切换,并弹出消息提示,原来选中的一项没有改变。
default-active
表示默认选中的一项,无法动态实时的显示激活的那项。所以无法通过改变default-active ,设置激活项。
解决方案:
由于导航菜单的每一项都是通过key绑定的index来的,每一次点击不同的菜单,切换的是index,并且可以通过select,来获取最新选中的index,所以解决方案的核心在于,当点击菜单并且不想让菜单切换时,为当前的index赋值为undefined
,当index为undefined时,无论点击哪一个,菜单都不会切换。
例如·:
<el-menu
:default-active="activeIndex"
class="sectorList"
active-text-color="#1890ff"
@select="memberChange">
<el-menu-item
v-for="item in memberList"
:key="item.id"
:class="editNew? '':'menuItems'"
:index="editNew?item.id.toString():(item.id.toString()===activeIndex?activeIndex:undefined)"
>
我这里循环渲染了memberList,当我的状态editNew
为true时,正常通过绑定的id渲染,当状态为false时,这里我多做了一次判断,因为当去点击原来就激活的菜单项时,原来的菜单项应该还是激活状态,只有当点击其他菜单项时,才不能切换。如果不这么做,会导致,点击原来激活的菜单项时,原来激活的菜单项不高亮显示了,变成了未激活状态。
这样就实现了这个功能需求,在某种状态下,点击菜单项不会发生切换。