<template>
<!-- Page Sidebar -->
<div class="page-sidebar" id="sidebar">
<!-- Page Sidebar Header-->
<div class="sidebar-header-wrapper">
<input type="text" class="searchinput"/>
<i class="searchicon fa fa-search"></i>
<div class="searchhelper">搜索菜单</div>
</div>
<!-- /Page Sidebar Header -->
<!-- Sidebar Menu -->
<ul class="nav sidebar-menu">
<li><a @click="setPageHeaderText('ddd')">sdfds</a></li>
<router-link tag="li" v-for="menu in menus" :to="{ path: menu.text }">
<a v-bind:class="{ 'menu-dropdown':menu.children }" @click="setPageHeaderText('caca')">
<i class="menu-icon " v-bind:class=" menu.ext.icon "></i>
<span class="menu-text"> {{ menu.ext.display_name }} </span>
<i class="menu-expand" v-if="menu.children"></i>
</a>
<ul class="submenu" v-if="menu.children">
<router-link tag="li" v-for="submenu in menu.children" v-bind:class="'second'"
:to="{ path: submenu.ext.name }"
active-class="active">
<a @click="setPageHeaderText(submenu.ext.display_name)">
<span class="menu-text">{{ submenu.ext.display_name }}</span>
</a>
</router-link>
</ul>
</router-link>
</ul>
<!-- /Sidebar Menu -->
</div>
<!-- /Page Sidebar -->
</template>
<style scoped>
</style>
<script>
export default{
name:'page-sidebar',
computed:{
menus(){
return this.$store.state.menus
}
},
methods: {
setPageHeaderText(text){
console.log(text)
//动态设置page-header
this.$store.dispatch('setPageHeaderText',text)
}
}
}
</script>
在router-link 上面的
<li>sdfds</li>
这句都 可以执行 但是在v-for 遍历出来的上面的事件没有执行 这是怎么回事
v-for的数据是ajax请求过来的 数据正常
直接看
vue-router
的代碼,就可以看到端倪了:Github
如果當前
router-link
的tag
不是a
的話,就會往自己的子元素(組件)找,找到的第一個就會把一些屬性及事件覆蓋過去。所以跟
v-for
,ajax
沒啥關係,主要就是這裡被覆蓋掉了,所以這邊建議不要使用router-link
,就普通的用li
就好,並且綁定個@click="go(menu.text, 'caca')
這樣,應該會更簡單清楚。