采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
请问老师this.$emit('change')中的this是指向什么?我自己查了一下说是指向子组件本身,但是在这个例子里面我把这个this替换成counter就报错,说counter.$emit不是一个方法。既然这个this是指向子组件本身,那为什么不可以直接用子组件来调用这个方法?还是说this.$emit是一个固定的写法?
代码截图贴上来我看下
<!DOCTYPE html> <head> <meta charset="utf-8"> <script type="text/javascript" src="../vue/vue.js"></script> </head> <body> <div id="app"> <counter :count="1" @change="changeHandle"></counter> <counter :count="2" @change="changeHandle"></counter> <div>{{total}}</div> </div> <script> var counter = { props: ['count', 'total'], data: function() { return { number: this.count } }, template: '<div @click="countHandle">{{number}}</div>', methods: { countHandle() { this.number++ counter.$emit('change') //TypeError: counter.$emit is not a function } } } var vm = new Vue({ el: '#app', components: { counter: counter }, data: { total: 3 }, methods: { changeHandle() { this.total = this.total + 1; } } }) </script> </body>
在下面,重新编辑了截图,谢谢老师
https://coding.imooc.com/learn/questiondetail/63792.html 老师有空的话再看看这个问题,谢谢
字数字数
你这个counter后面vue要对他进行编译生成一个vue对象,你直接在代码里用counter的时候它只是一个普通的js对象饮用。所以不要用counter.$emit,这是不好用的,直接用this就可以了
谢谢老师
登录后可查看更多问答,登录/注册
课程紧跟Vue3版本迭代,企业主流版本Vue2+Vue3全掌握
1.8k 20
1.5k 19
2.6k 17
1.3k 16
1.6k 15