我在将对象从 App.vue 文件导入到组件时遇到问题。但首先我应该解释一下这个项目的目的。 有一个组件(抽屉导航)和一个 App.vue 文件。抽屉导航中有 vue Prop ,您可以在 App.vue 文件中动态更改它们。问题是我只能使用抽屉导航文件中的链接数量。
我想对其进行编辑,以便可以使用所需数量的链接,甚至无需打开 Navigation-Drawer.vue 文件。在详细介绍之前,这里是带有 Prop 和有限数量链接的文件:
App.vue
<template>
<div id="app">
<navigation-drawer
name1="TFBern"
name2="Stackoverflow"
name3="YouTube"
name4="Google"
link1="https://vuejs.org"
link2="https://stackoverflow.com"
link3="https://youtube.com"
link4="https://google.com"
/>
<img alt="Vue logo" src="./assets/logo.png">
<HelloWorld msg="Welcome to Your Vue.js App"/>
</div>
</template>
<script>
import HelloWorld from './components/HelloWorld.vue'
import NavigationDrawer from './components/Navigation-Drawer.vue'
export default {
name: 'App',
components: {
HelloWorld,
NavigationDrawer
}
}
</script>
导航-Drawer.vue
<template>
<div class="navigationdrawer">
<span @click="openNav" style="fontsize:30px;cursor:pointer;display:flex;justify-content:center;">☰</span>
<div id="mySidenav" class="sidenav">
<a href="javascript:void(0)" class="closebtn" @click="closeNav">×</a>
<a v-bind:href="link1">{{ name1 }}</a>
<a v-bind:href="link2">{{ name2 }}</a>
<a v-bind:href="link3">{{ name3 }}</a>
<a v-bind:href="link4">{{ name4 }}</a>
</div>
</div>
</template>
<script>
export default {
name: 'NavigationDrawer',
props: {
name1: String,
name2: String,
name3: String,
name4: String,
link1: String,
link2: String,
link3: String,
link4: String
},
methods: {
openNav() {
document.getElementById('mySidenav').style.width = '15%'
},
closeNav() {
document.getElementById('mySidenav').style.width = '0%'
}
}
}
</script>
现在,我想到的是创建一个js对象,它可以将App.vue中的链接导入到抽屉中。像这样的事情:
<navigation-drawer links="[ {title="Google", link="www.google.ch"} , {title="Youtube", link="www.youtube.com"} , {title=…, link=…} ]"
我真的不知道该怎么做...有人可以帮忙吗?
谢谢。
最佳答案
您已经非常接近答案了。将 =
更改为 :
,值用 '
而不是 "
包围,这样您就有了一个对象列表
<navigation-drawer v-bind:links="[ {title:'Google', link:'www.google.ch'} , {title:'Youtube', link:'www.youtube.com'} , {title:…, link:…} ]"
然后抽屉导航 Prop 看起来像:
props: {
links: Array
},
并且 html 使用 v-for
和 template 循环遍历链接。 :
<div class="navigationdrawer">
<span @click="openNav" style="fontsize:30px;cursor:pointer;display:flex;justify-content:center;">☰</span>
<div id="mySidenav" class="sidenav">
<a href="javascript:void(0)" class="closebtn" @click="closeNav">×</a>
<template v-for=v-for="(link, index) in links">
<a v-bind:href="link.link" :key="index">{{ link.title}}</a>
</template>
</div>
</div>
关于javascript - Vue.js 导入对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60885937/