vuedraggable组件调整元素位置时,样式不跟着走——抛出的v-for的key的问题

vuedraggable,是一个拖拽换位的组件,vue2.0+组件,挺强大的,有需要的自己去搜索
https://github.com/SortableJS/Vue.Draggable
项目中,需要用到两个元素调换位置,并且,每个元素可以改变高度的功能。

红色框可以调整其高度。好了,重点来了,当两个元素调位置的时候,我发现,样式却带不来。如下图

上图是第二个改变了大小,

上图是调换后的效果,为啥第二个框的样式没有上去???v-for确实是按要求循环的啊,奇怪了。

<draggable v-bind="dragOptions" v-model="questionBox">
	<div v-drag class="pager-panel" v-for="(item,index) in questionBox" :key="index">
		<div class="q-title">{{ $com.num.numConvertChinese(item.no)}}、{{item.title}}</div>
		<div class="title-btn">
			<el-button type="primary" size="small" @click="handleSetting(item.questionType)">设置</el-button>
			<el-button type="primary" size="small" @click="handleDelQuestion(index)">删除</el-button>
		</div>
		<div class="q-content">
			<div v-if="item.questionType==0">000</div>
		</div>
		<div class="b-line"></div>
	</div>
</draggable>

代码如上,找了好多错误,后来突然间想到,难不成是v-for的:key的问题?

果不其然,还真是,因为我一直都用index绑定,如果在正常的列表的时候,循环是没有问题的。但是像我的项目需求,元素改变了样式,但调位置时却不跟着走就是因为index,因为我是为第N个修改的样式,自然修改的样式永远绑定到第n个元素上。

v-for中的:key换成自己生成的id,或者时间戳即可。我是绑定在生成的时间戳上。

总结,有时候最不起眼的小地方却成了你马失前蹄的原因,所以还是要多多读文档。

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值