vue在for循环中绑定html数据属性

Posted

技术标签:

【中文标题】vue在for循环中绑定html数据属性【英文标题】:vue bind html data attribute within for loop 【发布时间】:2021-05-19 04:11:05 【问题描述】:

我在 vue 中循环显示颜色代码以及工具提示中的颜色名称。工具提示通过 html 5 使用数据属性。

现在我正在尝试通过 vue 绑定它,我能想到并且在所有 vue 文档中使用的唯一语法就是 this

<div :data-tooltip="color.name" v-for="(color, index) in colors" :key="index" @click="setColor(color)" class="color-box" :style=" background: color.hexCode">

但是,这不起作用并导致 DOM 如下所示:

<div data-v-d0a245c6="" class="color-box" style="background: rgb(0, 247, 0);"></div>

我希望它看起来像这样:

<div data-attribute="Sunny yellow" class="color-box" style="background: rgb(0, 247, 0);"></div>

但由于某种原因,我无法动态绑定使用破折号的属性。

我也试过骆驼肠衣:

<div :dataTooltip="color.name" v-for="(color, index) in colors" :key="index" @click="setColor(color)" class="color-box" :style=" background: color.hexCode">

结果相同。 我在这里做错了什么?

【问题讨论】:

【参考方案1】:

你可以使用v-bind:

<div v-bind="getDataAttr(color.name)" v-for="(color, index) in colors" :key="index" @click="setColor(color)" class="color-box" :style=" background: color.hexCode">

...

methods: 
  getDataAttr(color) 
    return 
      'data-tooltip': color
    
  

【讨论】:

那么,这个基本会把v-bind="getDataAttr(color.name)"替换成data-tooltip="red"?哇 ! :D 是的,您可以从getDataAttr 方法返回任意数量的data- 属性。

以上是关于vue在for循环中绑定html数据属性的主要内容,如果未能解决你的问题,请参考以下文章

html Vue将类绑定到v-for循环中的元素

Vue.js v-for 循环绑定数组中的项目对象并在更改时更新

for循环中的Vue插槽范围

vue循环语句v-for中元素绑定值问题

vue循环语句v-for中元素绑定值问题

Vue方向:v-for循环中的key属性