触发兄弟方法Vue.js

时间:2017-06-20 02:44:52

标签: javascript jquery vue.js vuejs2

我无法弄清楚如何在一个组件中触发兄弟方法

我有这样的方法

methods: {
        closeModal: function(){
             function closeM(){
                $('.modal').css({opacity: 0 , 'visibility':'hidden'});      
             }
             closeM();
        },

        closeOutside: function(){
          $(document).mouseup(function (e){
            var container1 = $('.modal__box');
            if (!container1.is(e.target) &&   
            container1.has(e.target).length === 0)
              {
                this.$emit('closeModal',closeM());
              }
           });      
        }
   }

我的模板

                    <div class="modal" @click="closeOutside()"> 
                        <div class="modal__box z-depth-2 pr">
                            <div class="modal__header"> {{header}} </div>
                            <i class="modal__close pa fa fa-times" @click="closeModal() "> </i>
                            <div class="modal__content">
                                <slot> </slot>
                            </div>
                        </div>
                </div>

我无法触发closeModal,我错过了什么?我对vue js有点新鲜,为什么它不起作用?谢谢!

2 个答案:

答案 0 :(得分:1)

在Vue中,所有方法都将绑定到this,就像任何数据和计算方法一样。 所以你可以使用this.closeModal()

编辑: 我创造了一个可以帮助你入门的小提琴。注意:这是对您当前解决方案的完整返工,但它正在按照“vue&#39;方式。
我也是vue的新人,所以随时改进它。

https://jsfiddle.net/DarkFruits/gr0j9s6x/

答案 1 :(得分:0)

this.$emit('closeModal',closeM());

替换为

this.$emit('closeModal',this.closeModal());