vue多个元素绑定自定义指令,若删除其中一个元素,则其他元素的指令顺序会出现错误

发布于 2022-09-06 20:06:01 字数 1028 浏览 11 评论 0

template
clipboard.png

data
clipboard.png

directives

clipboard.png

  • 单击的时候会打印该元素的text
  • 双击的时候会删除该元素

clipboard.png

clipboard.png

clipboard.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

扎心 2022-09-13 20:06:01

图片描述

如果你只是想实现单击的时候打印该元素的text,双击的时候会删除该元素,那么使用vue的事件绑定不是更简单?

<p v-for="(item,index) in aa" :key="index" @click="log(item.text)" @dblclick="spl(index)">{{item.text}}</p>

methods

log(i){console.log(i)},
spl(i){this.aa.splice(i,1)}
寄人书 2022-09-13 20:06:01

文档有说明
除了 el 之外,其它参数都应该是只读的,切勿进行修改
clipboard.png

建议您给元素自定义属性 通过自定义属性取值

 <a href="javascript:;" v-for='item in aa' v-click="{i:item.text}" :data="item.text">{{item.text}}</a>
 function a() {
                        console.log(this.getAttribute('data'))
                    }
〃安静 2022-09-13 20:06:01

你之前的结构是通过数组的下标来当key。那么如果改变数组下标也就随之改变了

[0,1,2,3,4,5]//删除其中下标为2的,
[0,1,3,4,5]//后面的下标3的会变成2的。

所以有两种方案,
一是不删除

[0,1,null,3,4,5]//位置被占用。但是不会去渲染,因为是无效数据

二是不用数组下标,把index持久化到数据结构里面

[{value: 0,index:0},{value: 1,index:1},{value: 3,index:3},{value: 4,index:4},{value: 5,index:5}]

http://jsrun.net/IAqKp
clipboard.png

找个人就嫁了吧 2022-09-13 20:06:01

自己最后的解决方案是,在其父元素绑定自定义指令。用event.target获取点击得元素。这个时候删除数组元素还是修改都不会出现问题了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文