vue.js - 如何在 Vue.JS 中添加和删除确切的元素?
问题描述
美好的一天,我是 Vue 的新手,所以不要评判)
我创建了一个可以添加和删除输入的功能。
Vue模板部分
<div>
<div v-for="(input, indexOfInputs) in inputs" v-bind:key="input.id">
<input type="text">
<p @click="deleteRow(indexOfInputs)">Remove Input</p>
</div>
<p @click="addRow">Add Input</p>
</div>
脚本部分
data: () => {
inputs: [],
},
methods: {
addRow() {
this.inputs.push({
one: '',
});
},
deleteRow(indexOfInputs) {
this.inputs.splice(indexOfInputs, 1);
},
}
它工作得很好,但如果我有大约 100 个表格怎么办?
我的意思是 100 个div
这样的:
<div>
<div v-for="(input, indexOfInputs) in inputs" v-bind:key="input.id">
<input type="text">
<p @click="deleteRow(indexOfInputs)">Remove Input</p>
</div>
<p @click="addRow">Add Input</p>
</div>
例如,如果我将创建 100 个块,然后单击“添加输入”中的任何一个,它将添加 100 个输入而不是 1 个。
我不会创建 100 种方法,但是我应该怎么做呢?
我听说过一些关于event.taget
,但我不知道在这种情况下如何使用它..
解决方案
根据文档,vue 组件中的数据值应该是一个函数。如果不是,那么数据中的所有属性都将在同一组件的所有实例之间共享。
你可以这样写:
data: function () {
return {
inputs: []
}
}
使用 ES6 箭头函数的更短语法:
data: () => ({
inputs: [],
})
推荐阅读
- c++ - 为什么我能够增加指向单个新 int 位置的指针?令人惊讶的是它运作良好
- python - 为什么我生成的 WHERE 子句不正确?
- playlist - 在 Android 中为 ExoPlayer 使用 ConcatenatingMediaSource
- python - 如何根据条件将数据框列拆分为单独的列
- angular - Ngrx 问题试图结合 DRY 原则和良好的动作卫生
- python - Python extract title from URL
- javascript - 我的节点服务器没有使用 browsersync 作为代理加载页面
- android - 如何在社交媒体(whatsapp、gmail 等)、android studio 上共享/发送音频文件
- reactjs - React Graphql Typescript - 类型“{}”上不存在属性
- c++ - 在 C++ 中使用迭代器(后递增运算符 ++(int)、begin(order)和 end())进行二叉搜索树的遍历