Похоже, что вы используете два счетчика (счетчик, значение). Первый увеличивается на counter++
, а второй (значение) - на событие valPlus
в родительском элементе.
Я не вижу, где происходит распространение. Если вы нажмете кнопку, компонент btn выполнит counter++
, а родительский элемент выполнит метод valPlus
. Это не распространение, это два отдельных события в одном действии.
Если вам нужно только одно поведение, вы можете просто удалить @click.native.stop
, и счетчик btn все равно будет работать. Вы можете использовать $ emit на кнопке, чтобы передать счетчик родителю, если это желаемый результат.
Vue.component('btn', {
data: function(){
return {
count: 0
}
},
template: '<button v-on:click="count++">click me: {{ count }}</button>',
});
new Vue({
el: "#app",
data: function() {
return {
value: 0
}
},
methods: {
valPlus: function(){
this.value++;
}
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
{{ value }}
<br>
<btn ></btn>
</div>