首页IT科技vue事件对象的使用(vue中的事件触发(emit)及监听(on)问题)

vue事件对象的使用(vue中的事件触发(emit)及监听(on)问题)

时间2025-06-13 13:05:42分类IT科技浏览4107
导读:vue事件触发(emit 及监听(on 每个 vue 实例都实现了事件接口 1.使用 $on(eventName,callback 监听事件 2.使用 $emit(eventName,[…args] 触发事件...

vue事件触发(emit)及监听(on)

每个 vue 实例都实现了事件接口

1.使用 $on(eventName,callback) 监听事件 2.使用 $emit(eventName,[…args]) 触发事件

$emit 和 $on 必须都在实例上进行触发和监听            。

// on监听emit触发的事件 created:function(){     this.$on(emitFn,(arg)=> {           console.log(on监听参数====,arg)  //[string,false,{name:vue}]       })   },   methods:{     emit () {         // $emit 事件触发  参数是多个不同的数据类型时 用数组传递          this.$emit(emitFn,[string,false,{name:vue}])                    // 监听多个emit事件,将事件名用数组形式写  [emitFn1,emitFn2];           this.$emit([emitFn1,emitFn2],arg1)       }   }

案例

通过在父级组件中           ,拿到子组件的实例进行派发事件                  ,然而在子组件中事先进行好派好事件监听的准备      ,接收到一一对应的事件进行一个回调     ,同样也可以称之为封装组件向父组件暴露的接口                 。

vue emit事件无法触发问题

在父组件中定义事件监听                  ,会出现无法触发对应的事件函数            ,在下面的代码中     ,我想通过v-on:event_1=“handle           ”, 想监听子组件中的event_1事件                 ,但尽管事件发生了            , 但还是触发不了,这个问题在于v-on:event_1="handle"的位置                 ,需要放在 <my-template :users=“users                  ” v-on:event_1=“handle      ” ></my-template> 中      。

<body> <div id=app v-on:event_1="handle1"> <my-template :users="users"></my-template> </div> </body> <script> Vue.component(my-template, { data: function () { return { test:"hello" } }, props: ["users"], template: ` <div> <ul> <li v-for="item in users" :key="item.id"> <div> <label>name:</label> {{item.name}} <label>content:</label> {{item.content}} <label>time:</label> {{item.time}} <input type="button" value="remove" @click="remove(item.id)"></input> <input type="button" value="通知" @click="$emit(event_1,this)"></input> </div> </li> </ul> </div> `, methods:{ remove(id){ console.log(id); for(let i = 0; i<this.users.length;++i){ if(this.users[i].id == id){ this.users.splice(i,1); break; } } }, notice(id){ console.log("notice", id); }, handle(e){ console.log("son handle",e) } } }) var vm = new Vue({ el: #app, data: { posts: [ { id: 1, title: My journey with Vue }, { id: 2, title: Blogging with Vue }, { id: 3, title: Why Vue is so fun } ], postFontSize: 1, searchText: hello, users:[ { name:"zhangsan", id:1, time:new Date().getUTCDate(), content:"白日依山尽                  ,黄河入海流" }, { name:"lisi", id:2, time:new Date().getUTCDate(), content:"会当凌绝顶,一览众山小" }, { name:"wangwu", id:3, time:new Date().getUTCDate(), content:"大漠孤烟直           ,长河落日圆" } ] }, methods:{ handle1(e){ console.log("event 事件触发                  ,参数为:",e); } } }) </script>

以上为个人经验      ,希望能给大家一个参考           ,也希望大家多多支持本站            。

声明:本站所有文章                  ,如无特殊说明或标注      ,均为本站原创发布                 。任何个人或组织     ,在未征得本站同意时                  ,禁止复制            、盗用                 、采集      、发布本站内容到任何网站            、书籍等各类媒体平台      。如若本站内容侵犯了原著者的合法权益            ,可联系我们进行处理      。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
python3垃圾回收算法(python垃圾回收的机制过程) 手机网址搜索(手机网页内容搜索)