javascript - Vue复制粘贴功能,Vue列表渲染
问题描述
当我在输入字段中输入一些文本然后点击输入时,将其添加到列表中,并带有一个标题为“复制”的按钮现在我想要当我单击下一个输入时复制该输入。
但它只复制索引为 1 的元素
你可以运行这段代码
请检查一下,让我知道有什么问题
谢谢
new Vue({
el: "#app",
data: {
myInput: '',
items: []
},
methods: {
AddNew() {
this.items.push(this.myInput)
this.myInput= ""
},
copyText(index) {
console.log('1 =',this.items[index])
var textToCopy = document.querySelector(`.obj${this.items.indexOf(index)}`)
console.log( '2 =', textToCopy);
textToCopy.select()
document.execCommand("copy");
}
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<input type="text" v-on:keyup.enter="AddNew" v-model="myInput">
<div v-for="(item, index) in items" :key="index">
<input :class="['obj-' + index]" :value="item"> {{index}}
<button v-on:click=" copyText(index)">copy</button>
</div>
</div>
解决方案
您修改了一个数组,因此使用索引作为键并查找要复制的项目是不可靠的。
至少将项目本身传递给 copyText 方法:
<div v-for="(item, index) in items" :key="index">
<input :class="['obj-' + index]" :value="item"> {{index}}
<button v-on:click="copyText(item)">copy</button>
</div>
...
copyText(item) {
console.log('1 =',item)
var textToCopy = document.querySelector(`.obj${item}`)
console.log( '2 =', textToCopy);
textToCopy.select()
document.execCommand("copy");
}
推荐阅读
- html - 从 Python 中的分页 URL 获取上一页和下一页表
- python - 为重复项添加增量值
- javascript - 如何在 REST API 查询上添加过滤器以查看来自 QnAmaker 的答案?
- javascript - 多个 Highchart React 图的实时更新
- reactjs - 映射到初始未定义值
- iis - 更改 IP 后无法访问 IIS 站点
- reactjs - 带有material-ui的条件滑块
- image - 过滤低对比度的噪声图像
- flutter - 在 Flutter 中隐藏原生/机器人按钮
- matplotlib - 绘制3个参数(PosX,PosY)与时间的关系图。它是一个时间序列数据