Two equal examples (according to Vue.js) work differently:
First
<input v-model="value" @input.once="setDirty" type="text" id="object-email">
Second:
<input v-bind:value="value" v-on:input="value = $event.target.value"
@input.once="setDirty"
type="text"
id="object-email">
In the first example value changes only after second input, while the second example works correctly. If we delete @input.once attribute, two examples will work fine.
P.S. Vue 2.4.0