在 v-for 循环中使用 vue 组件

Posted

技术标签:

【中文标题】在 v-for 循环中使用 vue 组件【英文标题】:use vue component in v-for loop 【发布时间】:2017-12-01 23:40:01 【问题描述】:

您好,我需要帮助生成多个 vue 组件(vue-popperjs - 用于工具提示)。

在下面的代码中,组件出现在页面上,但我无法与它们交互(按钮不会切换工具提示,默认情况下会显示工具提示)并且我在控制台中有错误 “vue.common.js?e881:560 [Vue 警告]:挂载钩子错误: (见于)”

TypeError:无法读取未定义的属性“0” 在 VueComponent.mounted (eval at (app.js:909), :117:64) 在 callHook 处(在 (app.js:891) 处评估,:2275:21) 在 Object.insert (评估在(app.js:891),:2954:7) 在invokeInsertHook(评估在(app.js:891),:4960:28) at Vue$3.patch [as __patch__] (eval at (app.js:891), :5124:5) 在 Vue$3.Vue._update(评估在 (app.js:891), :2042:19) 在 Vue$3.updateComponent (eval at (app.js:891), :2158:10) 在 Watcher.get(评估在 (app.js:891), :2469:25) 在 Watcher.run(评估在 (app.js:891), :2539:22) 在flushSchedulerQueue(评估在(app.js:891),:2331:13)

代码:

<span class="input" v-for="additionalCategory in additionalCategories">
  <p>@ additionalCategory.name 

    <popper trigger="click" :options="placement: 'right'" :content="additionalCategory.tooltip_text">
      <div class="additionalCategory.tooltip_text">
        @ additionalCategory.tooltip_text 
      </div>

      <button slot="reference">
        Reference Element
      </button>
    </popper>
    <span v-if="additionalCategory.tooltip_active" class="tooltip-div" @click="showTooltip(additionalCategory.tooltip_text, additionalCategory.id, $event)">

      <span class="tooltip_toggle" v-bind:class="additionalCategory.id"></span>
    </span>
  </p>

  <div class="input-action">
    <div class="counter">
      <input type="text" :value="additionalCategory.quantity" :id="additionalCategory.id">

      <div class="ico"><img :src="'/images/icons/'+additionalCategory.icon+'.png'"
                            :id="additionalCategory.name"></div>
      <div class="plus-minus">
        <div class="minus" v-on:click="clickMinus($event, additionalCategory.id)"></div>
        <div class="plus" v-on:click="clickPlus($event, additionalCategory.id)"></div>
      </div>
    </div>
  </div>
</span>

我在 app.js 中注册了 popper:

Vue.component('popper', require('vue-popperjs'));

并且作为相同的组件工作但不在 for 循环中。 请帮帮我,我不知道该怎么办。

【问题讨论】:

你的组件的javascript代码是什么? 那是插件npmjs.com/package/vue-popperjs 我明白了。我的意思是你的代码。不是模板。 我不明白你什么代码?你的意思是在附加类别?我只是实现了那个插件并使用了他,我没有我的 js 代码。 是的,additionalCategories 是在哪里定义的? new Vue(...)等在哪里 【参考方案1】:

这里的问题归结为 popper 组件被嵌入到段落元素 (&lt;p&gt;&lt;/p&gt;) 中。把它从那个元素中去掉就解决了这个问题。

【讨论】:

以上是关于在 v-for 循环中使用 vue 组件的主要内容,如果未能解决你的问题,请参考以下文章

Vue.js v-for 在循环组件中增加一些变量

将 v-for 与 v-on 一起使用:在 Vue 组件中单击

Vue v-for 循环 - 过滤数组时如何定位组件

vue组件5 组件和v-for指令

5,v-for循环

vue v-for 在循环中重新渲染一个循环