我是我的 VueJS 项目,我想在子导航菜单中添加自定义按钮。按钮列表应该是每个视图可定义的。我的第一次尝试是向主数据元素添加一个简单的属性,但这不起作用。比我找到了 mixins 的概念,但这也不起作用。这是我的概念:
// main.js
new Vue({
//...
mixins: [{
data() {
return {
customHeaderButtons: [],
test: '123'
};
}
}],
})
<!-- TheHeader.vue -->
<template>
<CHeader>
<CSubheader class="px-3">
<CBreadcrumbRouter class="border-0" />
<CHeaderNav v-if="$root.customHeaderButtons" class="ml-auto" style="min-height: 0">
<CHeaderNavLink v-for="item in $root.customHeaderButtons">
<CIcon :name="item.iconName" />
</CHeaderNavLink>
{{$root.customHeaderButtons}}
</CHeaderNav>
{{$root.test}} --> 123
</CSubheader>
</CHeader>
</template>
<!-- MyView.vue -->
<template>
{{test}} --> ABC
</template>
<script>
export default {
data() {
return {
customHeaderButtons: [{
iconName: 'cil-save'
}],
test: 'ABC'
}
},
// ...
}
</script>
你能告诉我,为什么值的变化MyView.vue
没有应用于标题?在我的想象中,一旦用户导航到MyView.vue
,标题栏中的文本应该切换到 ABC。
PS:TheHeader 是我模板的一部分。它不包含在视图本身中!
<!-- TheContainer.vue -->
<template>
<div class="c-app">
<TheSidebar/>
<div class="c-wrapper">
<TheHeader/> <-- The data from any child view should be sent here <---+
<div class="c-body"> |
<main class="c-main"> |
<CContainer fluid> |
<transition name="fade"> |
<router-view></router-view> <-- This is where MyView goes ----+
</transition>
</CContainer>
</main>
</div>
<TheFooter/>
</div>
</div>
</template>