Uniapp小程序事件对象中如何获取自定义属性?

uniapp小程序事件对象:如何访问自定义属性?

uniapp小程序开发中,常常需要在组件事件处理函数中获取组件的自定义属性。然而,直接从事件对象获取这些属性有时会失败。本文将解释原因并提供解决方案。

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即可访问其值。

这与vue.JS的v-bind指令特性相关,更多细节请参考Vue.js官方文档。

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享