Since you are using boostrap, the proper way to disable a (anchor) button is not to set .disabled = true, but to add a disabled class.
Two other notes. You probably want to prevent the default behavior of the click event, so use @click.prevent. Also, if you don't have additional arguments, you don't need to use ="add($event)", just ="add" will suffice.
Demo below:
new Vue({
el: '#app',
methods: {
add(event) {
event.target.className += ' disabled'
}
}
})
body { padding: 10px }
<script src="https://unpkg.com/vue"></script>
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
<div id="app">
<a class="btn btn-danger" href="javascript:" @click.prevent="add">add</a>
</div>
You can also go pure Vue and use a class binding:
new Vue({
el: '#app',
data: {
btnDisabled: false
},
methods: {
add(event) {
this.btnDisabled = true; // mutate data and let vue disable the element
}
}
})
body { padding: 10px }
<script src="https://unpkg.com/vue"></script>
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
<div id="app">
<a class="btn btn-danger" href="javascript:" @click.prevent="add" :class="{disabled: btnDisabled}">add</a>
</div>