【问题标题】:How to keep track of parent element in v-for loop?如何在 v-for 循环中跟踪父元素?
【发布时间】:2020-10-02 19:09:24
【问题描述】:

我正在尝试将包含 html 标记的 div 元素中的文本更改为实际的 html。我有一个 v-for 循环,它将所有文本项列出到 div 中。

<li v-for="item in items">
    <div id="description" class="content">{{item.description}}</div>
</li>

整个文本只包含 html 元素,而不是把它变成我不想要的 html。

我曾考虑通过一个调用document.innerHTML() 的函数对其进行抽水,但我不确定如何使父级具有唯一的ID 来调用它。我想使用唯一 ID 或某种参数来跟踪项目的父项。

【问题讨论】:

  • 我并没有真正关注。这听起来就像一个XY问题。如果要呈现原始 HTML,请使用 v-html directive。父 ID 在哪里发挥作用?
  • 您可能还想看看:convert string to Dom in vuejs
  • hmm 和 @JayNyxed 你们俩都很棒,帮助很大。谢谢!

标签: vue.js


【解决方案1】:

为像我这样不读 cmets 的人回答这个问题 :-)

v-htmlrender an HTML sn-p 到页面。

您问题的第二部分涉及告诉 Vue 每个元素都是独一无二的。您可以使用:key 执行此操作。这些为您的元素提供Vue's Virtual DOM a unique ID。您可以在数据中使用唯一元素作为键或迭代编号。

如果您需要访问 Vue 反应性之外的其他内容的 ID,请使用 Vue ref

因此,将您的所有代码组合起来就变成了:

<li v-for="item in items" :key="item.name" ref="myItems">
    <div id="description" class="content" v-html="item.description"></div>
</li>

或用数字作为键

<li v-for="(item, n) in items" :key="n" ref="myItems">
        <div id="description" class="content" v-html="item.description"></div>
    </li>

注意:当在 v-for 中使用 ref 时,它们会生成一个数组。所以在这种情况下myItems.length == items.lengthmyItems[n] 是唯一的引用。

【讨论】:

猜你喜欢
  • 2013-02-08
  • 2021-07-31
  • 2022-07-29
  • 2017-03-23
  • 1970-01-01
  • 2015-09-10
  • 2015-07-11
  • 2021-08-17
  • 2019-06-02
相关资源
最近更新 更多