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

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

时间2025-05-04 11:01:07分类IT科技浏览3407
导读: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
auto.js复制文本(AutoJs4.4.1免费版快速接通vscode调试脚本的操作方法) explore.exe是什么进程出错怎么办(answers.exe是什么进程 answers进程信息查询)