2017-09-21 100 views

回答

0

對於您可以簡單地使用全局總線,放出到您的活動:

var bus = new Vue(); 

Vue.component('comp-a', { 
    template: `<div><button @click="emitFoo">Click Me</button></div>`, 
    methods: { 
    emitFoo() { 
     bus.$emit('foo'); 
    } 
    } 
}); 

Vue.component('comp-b', { 
    template: `<div>{{msg}}</div>`, 
    created() { 
    bus.$on('foo',() => { 
     this.msg = "Got Foo!"; 
    }) 
    }, 
    data() { 
    return { 
     msg: 'comp-b' 
    } 
    } 
}); 

這裏的的jsfiddle:https://jsfiddle.net/6ekomf2c/

如果你需要做的事情比較複雜,那麼你應該看看Vuex

0

@craig_h是正確的,或者您可以使用$參,如:

<parent-element> 
    <sibling-a @onClickButton="changeCall"></sibling-a> 
    <sibling-b ref="b"></sibling-b> 
</parent-element> 

在父方法:

methods: { 
    changeCall() { 
     this.$refs.b.dataChange = 'changed'; 
    } 
    } 

在siblingA:

Vue.component('sibling-a', { 
    template: `<div><button @click="clickMe">Click Me</button></div>`, 
    methods: { 
    clickMe() { 
     this.$emit('onClickButton'); 
    } 
    } 
}); 

在siblingB:

Vue.component('sibling-b', { 
    template: `<div>{{dataChange}}</div>`, 
    data() { 
    return { 
     dataChange: 'no change' 
    } 
    } 
});