I want someone to explain why this would not work in Vue.
HTML
<div id="app">
<button v-on:click="isActive = !isActive">Click me</button>
</div>
JS
vueApp = new Vue({
el: '#app',
data: {
isActive: false
}
});
Expected click behaviour: Vue Dev Tools - data: isActive equals true
Actual click behaviour: data: Vue Dev Tools - isActive equals false
But this does
HTML
<div id="app">
<button v-on:click="isActive = !isActive">Click me</button>
<p v-bind:class="{ active : isActive }">Some text</p>
</div>
JS
vueApp = new Vue({
el: '#app',
data: {
isActive: false
}
});
Expected click behaviour: Vue Dev Tools - data: isActive equals true, and p has active class.
Actual click behaviour: Vue Dev Tools - data: isActive equals true, and p has active class.
My gripe is, I expected Vue to be able to manipulate the data directly, not via another element on the page.
active
is a separate (and undefined) data property toisActive
? If you want to toggleisActive
, your first example should be@click="isActive = !isActive"
– Phildata
properties. See github.com/vuejs/vue-devtools/issues/41#issuecomment-162675083 – Phil