当前位置:   article > 正文

每日一学vue2:自定义绑定事件解除方式($off)及销毁vc_this.$off()

this.$off()

自定义事件的解绑

运用$off这个api来实现

1.解绑一个自定义事件时

举例:

StudentLqj.vue:

  1. <template>
  2. <button @click="sendStudentName">把学生名给App</button>
  3. //上面是给app里的:(atlqj)做出的绑定事件
  4. <button @click="unbind">把学生名给App</button>
  5. //上面是给app里的:(atlqj)做出的解绑事件
  6. </template>
  1. <script>
  2. ...
  3. methods:{
  4. sendSchoolName(){
  5. this.$emit('atlqj',this.name)
  6. },
  7. unbind(){
  8. this.$off('atlqj')
  9. }
  10. }
  11. </script>

2.解绑多个自定义事件时

我们再在app.vue里面定义一个事件demo
        所有在StudentLqj.vue里面的methods里面之前定义的函数(sendStudentName)需要在配置:
        this.$emit('demo')

        注意:如果我们相同时解除绑定这两个(或者你可以再写的多一些自定义绑定事件,道理都是一样的),
        需要借助子组件(StudentLqj.vue)中的:
        <button @click="unbind">解绑</button>
        这个按钮,来与下面的按钮事件配合(如下):
        unbind(){
                this.$off(['atlqj','demo'])
        }

        我们可以想一想,如果想解除一个自定义事件的话可以这样写:
        this.$off('atlqj')
        那如果我们要接触多个自定义事件的话,我们是不是可以通过一个数组的形式来将他们写到一块,然后再接触绑定?
        o~k!没错滴!
        详细代码如下:

App.vue:

  1. <template>
  2. <StudentLqj v-on:atlqj="getStudentName" @demo="m1"></StudentLqj>
  3. </template>
  4. <script>
  5. methods:{
  6. getStudentName(name){
  7. console.log('App收到了学生名:',name)
  8. },
  9. m1(){
  10. console.log('demo事件被触发了!')
  11. }
  12. },
  13. ...
  14. </script>

StudentLqj.vue:

  1. <template>
  2. <button @click="sendStudentName">把学生名给App</button>
  3. <button @click="unbind">把学生名给App</button>
  4. </template>
  5. <script>
  6. ...
  7. methods:{
  8. sendStudentName(){
  9. this.$emit('atlqj',this.name)
  10. this.$emit('demo')
  11. },
  12. unbind(){
  13. this.%off(['atlqj','demo'])
  14. }
  15. }
  16. </script>

 注意:this.$off()是解绑默认的所有自定义事件的值

        列表:
        this.$off('xxx')解除一个xxx自定义绑定事件
        this.$off(['xxx','yyy'])解除xxx和yyy自定义绑定事件
        this.$off()默认解除所有的自定义绑定事件

3.组件实例对象(vc)销毁

如果一个组件的的实例对象(vc)被销毁了,那它身上的组件自定义组件也就跟着不起作用了!

StudentLqj.vue:

  1. <template>
  2. <button @click="sendStudentName">把学生名给App</button>
  3. <button @click="death">销毁student子组件的vc</button>
  4. </template>
  5. <script>
  6. ...
  7. death(){
  8. this.$destroy()//销毁了当前的student组件实例(vc)
  9. }
  10. ...
  11. </script>

如果点击销毁当前子组件的按钮,不需要点击解绑的按钮,自定义绑定事件则不起作用,
        因为子组件的vc都没有了!

只要路飞还在笑,我的生活没烦恼!

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号