2017-08-04 17 views
2

在下面的代碼,單擊組件上發出信號到父,誰修改其狀態在線(在這個意義上 - 而不是通過一個處理程序):

Vue.component('my-component', { 
 
    template: '<div v-on:click="emitit">click on the component</div>', 
 
    methods: { 
 
    emitit: function() { 
 
     this.$emit('mysignal', 7) 
 
    } 
 
    } 
 
}) 
 

 
new Vue({ 
 
    el: "#root", 
 
    data: { 
 
    from: 0 
 
    } 
 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.3.4/vue.min.js"></script> 
 
<div id="root"> 
 
    <my-component v-on:mysignal="from=5"></my-component> 
 
    from component: {{ from }} 
 
</div>

是否有可能通過$emit直接在v-on:mysignal="..."訪問提供的參數?

我知道我可以使用在主Vue組件中定義的處理程序,但我想簡化我的代碼並避免在methods中有幾個處理程序。

回答

1

是的,是這樣的:

<my-component v-on:mysignal="value => from = value"></my-component> 

Vue.component('my-component', { 
 
    template: '<div v-on:click="emitit">click on the component</div>', 
 
    methods: { 
 
    emitit: function() { 
 
     this.$emit('mysignal', 7) 
 
    } 
 
    } 
 
}) 
 

 
new Vue({ 
 
    el: "#root", 
 
    data: { 
 
    from: 0 
 
    } 
 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.3.4/vue.min.js"></script> 
 
<div id="root"> 
 
    <my-component v-on:mysignal="value => from = value"></my-component> 
 
    from component: {{ from }} 
 
</div>

相關問題