HTML代码:
<ul class="list">
<li class="item"
v-for='item of letters'
:key='item'
:ref='item'
@click='handleClick'
@touchstart='handleTouchStart'
@touchmove='handleTouchMove'
@touchend='handleTouchEnd'
>{{item}}</li>
</ul>
逻辑代码:
handleTouchMove(){
console.log('handleTouchMove');
if (this.touchStatus) {
const startY = this.$refs.A[0].offsetTop
console.log(this.$refs.A); =====>这个打印出数组来了,为什么?
console.log(startY);
}
},
数据项:letters =[A,B,C,D,E,F,G,H,I,.....,X,Y,Z]
请问各位大佬,这里的ref是通过数据绑定的形式使用的时候,为啥 this.$refs.A打印出来的是一个数组?
这个测试了下,还真奇特
https://cn.vuejs.org/v2/api/#ref 官方的建议貌似不允许ref用数据绑定
我看了下源码 跟这个函数里registerRef()、processRef、checkInFor以及refInFor有关
当ref的元素el本身或者 parent有列表渲染时v-for ,会将refInFor设置成true
然后ref.key在registerRef函数就被设置成了数组