下面是简化的代码:
var theButton = {
props: ["toggle"],
methods: {
click: function (event) {
event.target.style.backgroundColor = this.toggle ? "blue" : "gray";
}
},
template: `
<button v-on:click="click" v-on:mouseup="$emit('change')">ABC</button>
`
}
var vm = new Vue({
el: "#app",
data: {
toggle: true
},
components: {
"the-button": theButton
},
template: `
<div>
<the-button v-bind:toggle="toggle"
v-on:change="toggle = !toggle"></the-button>
</div>
`
});
我创建了一个只包含一个按钮元素的组件。单击它时,按钮背景颜色和绑定数据将被切换。
如您所见,我在按钮上设置了两个事件。一个click用于更改背景颜色的mouseup事件和一个用于更改绑定数据的事件。我不绑定两个click事件,否则会触发错误。
我想要实现的是创建一个click既可以更改背景颜色又可以设置父级新数据的事件。
顺便说一句,绑定数据可以是素数数据,例如String、Number或Boolean,直接覆盖那些数据不能改变父数据。