如何获得Topbar组件传递的标题值,并在data ()返回部分中使用该值?我尝试添加一个方法来传递值,但不幸的是,它没有工作,尽管我能够在父文件中控制台记录这个值。我仍然是vue js的初学者,所以我希望能在这个问题上提供一些帮助。谢谢!
<template>
<div>
<Topbar :tabs='tabs' @pass-data="getTabTitle"/>
</div>
</template>
<script>
import Topbar from "../components/Navigation/Topbar.vue";
export default {
name: "Progress",
components: {
Topbar,
},
data() {
return {
title:'',//have the emitted value here
tabs: [
{
link:'',
name: "Sec 1",
dropdown: false,
dropdownTabs:[]
},
{
link:'',
name: "Sec 2",
dropdown: false,
dropdownTabs:[]
}
]
}
},
methods: {
getTabTitle(title) {
console.log(title)
this.title =title
}
},
}
</script>顶板模板
<template>
<ul class="navbar-nav">
<li @click="onClick(tab.name)"
v-for="(tab, index) in tabs.filter((tab)=> tab.dropdown===false)" :key="index">
{{tab.name}}
</li>
<DropdownMenu v-for="(tab, index) in tabs.filter((tab)=> tab.dropdown===true)" :key="index"
:tab="tab" />
</ul>
</template>
<script>
import DropdownMenu from "./DropdownMenu.vue";
export default {
name: "Topbar",
props: {
tabs: Array
},
components: {
DropdownMenu,
},
methods: {
onClick(tabName) {
this.$emit('pass-data',tabName)
}
}
}
</script>发布于 2022-10-14 12:17:50
尝试类似于下面的片段(将所有选项卡传递给子选项卡并在那里循环):
const app = Vue.createApp({
data() {
return {
title:'',
tabs: [
{link:'', name: "Sec 1", dropdown: false, dropdownTabs:[]},
{link:'', name: "Sec 2", dropdown: false, dropdownTabs:[]}
]
}
},
methods: {
getTabTitle(title) {
console.log(title)
this.title =title
}
}
})
app.component('topbar', {
template: `
<div v-for="(tab, i) in tabs" :key="i">
<button @click="send(tab.name)">{{ tab.name }}</button>
</div>
`,
props: ['tabs'],
methods: {
send(title) {
this.$emit('passData', title)
}
}
})
app.mount('#demo')<script src="https://unpkg.com/vue@3/dist/vue.global.prod.js"></script>
<div id="demo">
<b>{{ title }}</b>
<topbar :tabs='tabs' @pass-data="getTabTitle"></topbar>
</div>
https://stackoverflow.com/questions/74068920
复制相似问题