Vue自定义事件

我们都知道vue.js十分的好用

尤其是vue自带的指令 

像 : v-if用于条件渲染,v-for用于列表渲染,v-on绑定事件

 

而且我们可以自定义指令,不管是全局的还是局部的指令

注册全局自定义指令时使用   directive()  方法

1 // 注册一个全局自定义指令 `v-focus`
2 Vue.directive('指令名称', {
3   // 当被绑定的元素插入到 DOM 中时……
4   inserted: function (el) {
5     // 聚焦元素
6     el.指令名称()
7   }
8 })

 

注册局部自定义指令时使用  directives  选项(不是注册全局指令时的directive方法哦)

1 directives: {
2   指令名称: {
3     // 指令的定义
4     inserted: function (el) {
5       el.指令名称()
6     }
7   }
8 }

 

然后我们就能愉快的使用自定义好的指令了   就像是:

<input  v-自定义指令名称>

 

转载于:https://www.cnblogs.com/mlw1814011067/p/9958681.html

### Vue.js 自定义事件使用指南 在 Vue.js 中,自定义事件是一种强大的机制,用于组件之间的通信。通过 `v-on` 指令绑定事件监听器,并通过 `$emit` 方法触发事件,可以实现父子组件、兄弟组件甚至非父子关系的组件之间的交互[^1]。 以下是一个完整的示例,展示如何在 Vue.js 中使用自定义事件: #### 父子组件间的自定义事件 ```html <!-- 父组件 --> <div id="app"> <child-component @custom-event="handleCustomEvent"></child-component> </div> <script> // 子组件 Vue.component('child-component', { template: `<button @click="sendEvent">触发事件</button>`, methods: { sendEvent() { this.$emit('custom-event', '这是从子组件传递的数据'); } } }); new Vue({ el: '#app', methods: { handleCustomEvent(data) { console.log('自定义事件被触发,接收到的数据:', data); } } }); </script> ``` 在这个例子中,子组件通过 `$emit` 方法触发名为 `custom-event` 的自定义事件,并将数据传递给父组件。父组件通过 `@custom-event` 绑定监听器并处理该事件。 #### 使用事件总线(Event Bus)进行组件间通信 当需要在非父子关系的组件之间通信时,可以使用事件总线[^2]。以下是具体实现: ```javascript // eventBus.js import Vue from 'vue'; const eventBus = new Vue(); export default eventBus; ``` ```html <!-- 组件 A --> <script> import eventBus from './eventBus'; export default { methods: { sendDataToB() { eventBus.$emit('message-from-a', '这是来自组件 A 的消息'); } } }; </script> ``` ```html <!-- 组件 B --> <script> import eventBus from './eventBus'; export default { created() { eventBus.$on('message-from-a', (message) => { console.log('接收到的消息:', message); }); } }; </script> ``` 在此示例中,组件 A 通过事件总线触发事件,而组件 B 监听该事件并接收数据。 #### 表单提交中的自定义事件与修饰符 在处理表单提交时,可以结合自定义事件事件修饰符来简化逻辑[^3]。例如: ```html <form @submit.prevent="handleSubmit"> <input type="text" v-model="formData.name" /> <button type="submit">提交</button> </form> <script> export default { data() { return { formData: { name: '' } }; }, methods: { handleSubmit() { this.$emit('form-submitted', this.formData); } } }; </script> ``` 此代码片段展示了如何通过 `@submit.prevent` 阻止默认表单提交行为,并通过 `$emit` 触发自定义事件。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值