开发者问题收集

在 Vue.js 中尝试动态添加 id 时出现未定义 id

2019-10-15
624

这是一个简单的待办事项列表,我正在尝试在每个呈现的 <li> 中添加一个 id。每个 id 应该命名为不同(显然)但相似的名称:“id0”,“id1”,“id2”......等等

该数字来自指令 v-for="i in items"

我这样做是这样的:

<li :id="`id${i.id}`" v-for="i in items" :key="`id${i.id}`">

完整代码:

<ul class="item-list-ul">
        <li :id="`id${i.id}`" v-for="i in items" :key="`id${i.id}`">{{ i }}
          <div class="item-butons">
            <b-button class="done-btn" @click="strikeItem(i)" size="sm" variant="outline-dark">DONE!</b-button>
            <b-button class="delete-btn" @click="deleteItem(i)" size="sm"  variant="warning">Delete</b-button>
          </div>
        </li>
      </ul>

我的 items 数组:

data () {
      return {
          items: ["five", "<li>", "should","be","rendered"]
        }
    }

但是当我在控制台中检查 <li> 的新动态创建的 id 的名称时,它们只是显示 idundefined ,而在例如有 3 个 <li> 的情况下,它们应该显示如下:

id0
id1
id2

但是在控制台中没有任何错误。看起来 vue-html 根本没有读取 ${i.id> 中的数字,而只是读取未定义的数字。为什么?

1个回答

如果 items 只是一个字符串数组,则没有可用的 id 属性。在这种情况下,标准做法是使用索引,如下所示:

<li v-for="(i, index) in items" :id="`id${index}`" :key="index">

或者,您可以重塑数据,使其具有如下 ID:

[{ id: 0, text: 'foo' }, { id: 1, text: 'bar' }, { id: 2, text: 'baz' }]

例如,这可以作为 计算属性 的一部分来完成。请注意,这还需要对您的模板进行一些更改。

David Weldon
2019-10-15