【问题标题】:Vue call sibling's methodVue调用兄弟的方法
【发布时间】:2017-10-17 12:32:35
【问题描述】:
<root>
   <my-button @click="save()"/>
   <my-form/>
</root>

my-form.vue

methods:{
   save(){}
}

如何通过my-buttonmy-form调用save()

【问题讨论】:

标签: vue.js vuejs2 vue-component


【解决方案1】:

您可以使用事件总线:

let EventBus = new Vue();

let MyButton= Vue.extend({
    name: "my-button",
  props: ["what"],
  template: `
    <button class="btn btn-md btn-success the-button" @click="save()">Sender: {{what}}</button>
  `,
  methods: {
    save: function(){
        EventBus.$emit("form.save", //pass payload here);
    }
  }
});

Vue.component("my-button", MyButton);

***my-form.vue:****

 created(){
     EventBus.$on('form.save', (payload)=>{
         this.save(payload)
    });
},
methods:{
    save(payload) {}
}

完整的工作示例:https://jsfiddle.net/arvidkahl/gxdn6ycv/17/

【讨论】:

  • 兄弟姐妹是否也有父子关系?
  • 没关系,只要用同一个EventBus,它们都监听同一个事件
猜你喜欢
  • 2018-06-27
  • 1970-01-01
  • 1970-01-01
  • 2018-10-28
  • 1970-01-01
  • 2016-11-08
  • 2017-10-21
  • 2018-10-03
  • 1970-01-01
相关资源
最近更新 更多