vue如何給組件動態(tài)綁定不同的事件
vue給組件動態(tài)綁定不同的事件
場景
根據(jù)用戶配置的事件動態(tài)綁定。也就是用戶可以動態(tài)選擇配置 click ,change,blur等事件
需要根據(jù)用戶的配置的事件動態(tài)綁定 @click、@change或@bulr
實際操作代碼如下:
<template> ? <div> ? ? <el-input v-for="(item,index) in list" ? ? ? ? :key="index" ? ? ? ? v-on:[item.event]="item.eventName"></el-input> ? </div> </template> <script> export default { ? ? name: "eventPage", ? ? data() { ? ? ? ? return { ? ? ? ? ? ? list: [{ event: "change" ,eventName:"changeName"}] ? ? ? ? ? ? } ? ? ? ? }, ? ? methods: { ? ? ? ? changeName(){ ? ? ? ? ? ? console.log('change事件') ? ? ? ? } ? ? } }; </script>
以上動態(tài)事件??梢钥s寫
<el-input @[item.event]="item.eventName"></el-input>
vue組件綁定事件無效
在vue中直接在組件上綁定事件是無效的,例如以下代碼是無效的:
? ? <div id="app"> ? ? ? ? <btn @click='alert(1)'>點擊</btn> ? ? </div> ? ? <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.min.js"></script> ? ? <script> ? ? ? ? Vue.component('btn', { ? ? ? ? ? ? template:` ? ? ? ? ? ? <button> ? ? ? ? ? ? ? ? <slot></slot> ? ? ? ? ? ? </button> ? ? ? ? ? ? ` ? ? ? ? }) ? ? ? ? new Vue({ ? ? ? ? ? ? el: '#app',? ? ? ? ? ? ? data() { ? ? ? ? ? ? ? ? return { ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? }); ? ? </script>
如果一定要直接在組件上綁定事件也是可以實現(xiàn)的,
下面提供兩者方法,可以任選其一
1、你可能有很多次想要在一個組件的根元素上直接監(jiān)聽一個原生事件。這時,你可以使用 v-on 的 .native 修飾符
<div id="app"> ? ? ? ? <btn @click.native='alert(1)'>點擊</btn> </div>
2、從內(nèi)部傳出來
?? ?<div id="app"> ? ? ? ? <btn @click='alert(1)'>點擊</btn> ? ? </div> ? ? <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.min.js"></script> ? ? <script> ? ? ? ? Vue.component('btn', { ? ? ? ? ? ? template:` ? ? ? ? ? ? <button @click='handleClick'> ? ? ? ? ? ? ? ? <slot></slot> ? ? ? ? ? ? </button> ? ? ? ? ? ? `, ? ? ? ? ? ? methods: { ? ? ? ? ? ? ? ? handleClick(e){ ? ? ? ? ? ? ? ? ? ? this.$emit('click','e') ? ? ? ? ? ? ? ? } ? ? ? ? ? ? }, ? ? ? ? }) ? ? ? ? new Vue({ ? ? ? ? ? ? el: '#app',? ? ? ? ? ? ? data() { ? ? ? ? ? ? ? ? return { ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? }); ? ? </script>
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue中v-if和v-for一起使用的弊端及解決辦法(同時使用 v-if 和 v-for不
當 v-if 和 v-for 同時存在于一個元素上的時候,v-if 會首先被執(zhí)行,這篇文章主要介紹了vue中v-if和v-for一起使用的弊端及解決辦法,需要的朋友可以參考下2023-07-07vue使用directive限制表單輸入整數(shù)、小數(shù)的方法
這篇文章主要介紹了vue使用directive限制表單輸入整數(shù),小數(shù),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04vue-cli構(gòu)建的項目如何手動添加eslint配置
這篇文章主要介紹了vue-cli構(gòu)建的項目如何手動添加eslint配置,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-04-04Vue+Element UI 樹形控件整合下拉功能菜單(tree + dropdown +input)
這篇文章主要介紹了Vue+Element UI 樹形控件整合下拉功能菜單(tree + dropdown +input)的方法,幫助大家更好的理解和學習vue,感興趣的朋友可以了解下2020-08-08vue3為什么要用proxy替代defineProperty
這篇文章主要介紹了vue3為什么要用proxy替代defineProperty,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-10-10