Vue中.native修饰符的作用及说明
vue .native修饰符的作用
一般情况下,父组件要监听子组件的事件,可以通过$emit的方式。
但是如果父组件要监听子组件的原生事件,比如:input的focus事件。
此时可以通过使用v-on的.native修饰符达到目的。
.native 可以在某组件的 根元素 上监听一个原生事件
从上面的语句可以看出
.native作用于组件的根元素。
所以如果需要监听的元素是作为根元素,此时.native完全适用
例如:
父组件
<template>
<div id="app">
<baseLabel v-on:focus.native="onFocus"/>
</div>
</template>
<script>
import baseLabel from './components/HelloWorld.vue'
export default {
name: 'app',
components: {
baseLabel
},
methods: {
onFocus() {
console.log('lalalalal');
}
}
}
</script>
子组件
<template>
<input type="text"/>
</template>
<script>
export default {
name: 'baseLabel',
}
</script>
效果:

但是如果目标预监听的元素不是根元素,那么.native可能会失效,此时可以利用 emit的方法 , 通过使用‘emit的方法,通过使用` emit的方法,通过使用‘listeners.native的事件。
子组件则监听这些事件,当事件发生通知父组件 这个时候就不需要使用
.native`修饰符就可以监听原生事件了
实例:
父组件
<template>
<div id="app">
<baseLabel v-on:focus="onFocus"/>
</div>
</template>
<script>
import baseLabel from './components/HelloWorld.vue'
export default {
name: 'app',
components: {
baseLabel
},
methods: {
onFocus() {
console.log('lalalalal');
}
}
}
</script>
子组件
<template>
<label>
<input v-on="inputListeners"/>
</label>
</template>
<script>
export default {
name: 'baseLabel',
computed: {
inputListeners() {
var vm = this
// 将所有的对象整合在一起
return Object.assign({},
// 从父组件添加所有的监听器
this.$listeners,
// 添加自定义的监听器
{
// 确保v-model正常工作
input(event) {
vm.$emit('input',event.target.value)
}
})
}
}
}
</script>
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
前端项目vue3/React如何使用pako库解压缩后端返回gzip数据
pako是一个流行的JS库,用于在浏览器中进行数据压缩和解压缩操作,它提供了对常见的压缩算法的实现,使开发者能够在客户端上轻松进行数据压缩和解压缩,这篇文章主要介绍了前端项目vue3/React使用pako库解压缩后端返回gzip数据,需要的朋友可以参考下2024-07-07
Vue3使用vant检索组件van-search遇到的问题小结
当清空按钮与检索按钮同时居右时,点击clear清空按钮事件时会同时触发click-right-icon事件,这个时候容易触发一系列问题,小编小编给大家分享Vue3使用vant检索组件van-search遇到的问题小结,感兴趣的朋友一起看看吧2024-02-02
vue中如何使用echarts和echarts-gl实现3D饼图环形饼图
现在vue是很多公司前端的主流框架,我目前所在公司接触的项目也都是使用vue来实现的,很少有完全使用原生的JavaScript来写项目的了,下面这篇文章主要给大家介绍了关于vue中如何使用echarts和echarts-gl实现3D饼图环形饼图的相关资料,需要的朋友可以参考下2023-03-03


最新评论