请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于this.$emit

请问老师this.$emit('change')中的this是指向什么?我自己查了一下说是指向子组件本身,但是在这个例子里面我把这个this替换成counter就报错,说counter.$emit不是一个方法。既然这个this是指向子组件本身,那为什么不可以直接用子组件来调用这个方法?还是说this.$emit是一个固定的写法?

正在回答

2回答

Dell 2018-07-04 22:39:28

代码截图贴上来我看下

1 回复 有任何疑惑可以回复我~
  • 提问者 vylss #1
    <!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>
    回复 有任何疑惑可以回复我~ 2018-07-04 23:20:43
  • 提问者 vylss #2
    在下面,重新编辑了截图,谢谢老师
    回复 有任何疑惑可以回复我~ 2018-07-04 23:24:29
  • 提问者 vylss #3
    https://coding.imooc.com/learn/questiondetail/63792.html  老师有空的话再看看这个问题,谢谢
    回复 有任何疑惑可以回复我~ 2018-07-05 02:14:39
提问者 vylss 2018-07-04 23:21:08

https://img1.sycdn.imooc.com//szimg/5b3ce67d0001f5d706720680.jpg字数字数

0 回复 有任何疑惑可以回复我~
  • Dell #1
    你这个counter后面vue要对他进行编译生成一个vue对象,你直接在代码里用counter的时候它只是一个普通的js对象饮用。所以不要用counter.$emit,这是不好用的,直接用this就可以了
    回复 有任何疑惑可以回复我~ 2018-07-05 09:56:29
  • 提问者 vylss 回复 Dell #2
    谢谢老师
    回复 有任何疑惑可以回复我~ 2018-07-05 10:04:34
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信