javascript - Vue.js 导入对象

标签 javascript arrays vue.js object vue-cli

我在将对象从 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;">&#9776;</span>
        <div id="mySidenav" class="sidenav">
            <a href="javascript:void(0)" class="closebtn" @click="closeNav">&times;</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-fortemplate 循环遍历链接。 :

<div class="navigationdrawer">
    <span @click="openNav" style="fontsize:30px;cursor:pointer;display:flex;justify-content:center;">&#9776;</span>
    <div id="mySidenav" class="sidenav">
        <a href="javascript:void(0)" class="closebtn" @click="closeNav">&times;</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/

相关文章:

javascript - HTML、Javascript、PHP - 选择菜单 + 其他输入框

javascript - 我在将英寸转换为厘米的转换表时遇到问题

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

jquery - 切换 jquery 元素集合中的元素位置

javascript - vue js计算属性中的轻微延迟

javascript - IE9 window.open 问题

javascript - 文本区域值和文本属性在 react 中未定义

c - 如果我声明一个 10 元素数组并尝试访问其中更大的位置,到底会发生什么?

vue.js - 插件 nativescript-fancyalert 不适用于 Android

javascript - 类型错误 : Cannot read property '_modulesNamespaceMap' of undefined in Vue