javascript - 如何在 Vue.js 中使用 v-for 循环嵌套导航?

标签 javascript vue.js

我正在尝试使用 Vue.js 设置多级导航。

当我尝试在父导航元素的 v-for 中使用 v-for 时,Vue 会抛出错误并显示 item is undefined.

HTML:

<nav id="hf-nav">
  <a v-for="item in itemLinks" :href="`${item.link}`"></a>
    {{ item.title }}
    <nav v-if="item.subItems">
      <a v-for="sub in item.subItems" :href="`${sub.link}`">{{ sub.title }}</a>
    </nav>
  </a>
</nav>

JavaScript:

new Vue({
  el: '#hf-main',
  data: {
    homepage: true,
    itemLinks: [
      { title: 'Home', link: './' },
      {
        title: 'Diensten',
        link: './diensten',
        subItems: [
          { title: 'Elektromontage', link: './elektromontage' },
          { title: 'Installatietechniek', link: './installatietechniek' },
          { title: 'Schoonmaak', link: './schoonmaak' },
          { title: 'Overige diensten', link: './overige-diensten' },
        ],
      },
      { title: 'Over H&F', link: './over-hf' },
      { title: 'Contact', link: './contact' },
    ],
  },
})

我希望 Vue 循环并检查 itemLinks 对象内部是否有第二个级别,如果有,我希望 Vue 执行另一个循环。

最佳答案

问题是关闭</a>在此行末尾标记:

<a v-for="item in itemLinks" :href="`${item.link}`">{{ item.title }}</a>

item对于v-for只会在此标记的范围内定义,因此后面的行不会知道任何有关它的信息。

我的猜测是您的目标是:

<nav id="hf-nav">
    <template v-for="item in itemLinks">
        <a :href="`${item.link}`">{{ item.title }}</a>
        <nav v-if="item.subItems">
            <a v-for="sub in item.subItems" :href="`${sub.link}`">{{ sub.title }}</a>
        </nav>
    </template>
</nav>

令我有点惊讶的是,您的编辑器没有警告您 HTML 标记不平衡。收盘</a>代码倒数第二行上的标记没有匹配的开始标记。

顺便说一下,:href="`${item.link}`" 不需要使用反引号。 ,你可以写:href="item.link":href="sub.link" 同样如此.

关于javascript - 如何在 Vue.js 中使用 v-for 循环嵌套导航?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57442978/

相关文章:

javascript - Angular Directive(指令)中的模糊无法正常工作

javascript - html2Canvas 无法及时检索数据 url 以生成 pdf

javascript - 如何使 div 垂直居中?

vue.js - vuetify 如何将内容设置为选项卡 v-tabs-items

vue.js - 错误 : "You may need an additional loader to handle the result of these loaders."

javascript - 使用vue.js和vee-validate,在: and a computed field doesn't seem to work之后使用日期验证

javascript - 如何在 TypeScript 中正确导出和导入模块

javascript - 两次上传相同的图像文件 - Javascript

html - 如何使 Vuetify v-card-text 单行?

javascript - Vue JS无法将方法返回的数据显示到DOM