在uniapp小程序开发中,常常需要在组件事件处理函数中获取组件的自定义属性。然而,直接从事件对象获取这些属性有时会失败。本文将解释原因并提供解决方案。
问题:
开发者使用v-bind绑定名为msg-data的自定义属性,期望在@click事件中通过Event.target获取其值。代码如下:
<button @click="handleClick" :msg-data="myData">点击</button>
然而,handleClick函数中打印event.target,却找不到msg-data属性。虽然可以使用函数传参解决,但开发者不明白为何无法直接从事件对象获取自定义属性。
解答:
这并非微信小程序mvc模式的问题,而是由于dom属性(Property)和html属性(Attribute)的差异导致的。v-bind默认绑定的是HTML属性,而非DOM属性。因此,event.target只能通过event.target.attributes访问HTML属性,无法直接访问event.target.msg-data。
解决方案:
使用.prop修饰符强制将msg-data绑定为DOM属性:
<button @click="handleClick" :msg-data.prop="myData">点击</button>
添加.prop后,msg-data将作为DOM属性绑定到按钮元素,event.target.msg-data即可访问其值。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END