# Form Input Bindings
# The v-model Directive
This section is about the v-model directive.
It's important to note that for now in Vue GWT only @Data fields or @Computed with a getter and a setter can be used directly in v-model.
Apart from this limitations, v-model works the same way in Vue GWT than in Vue.js.
You can just see Vue.js documentation about Form Input Bindings.
# Using a Computed Property
You can use a Computed property with v-model:
@Component
public class TodoTextComputedComponent implements IsVueComponent {
@Data Todo todo = new Todo("Hello World!");
@Computed
public String getTodoText() {
return this.todo.getText();
}
@Computed
public void setTodoText(String text) {
this.todo.setText(text);
}
}
<div>
<input v-model="todoText"/>
Todo Text: {{ todoText }}
</div>
# Binding to Inputs Without The v-model Directive
In some case you can't use computed properties.
For example inside a v-for on the loop variable.
In those case you can use the following syntax:
<div>
<input :value="todo.getText()" @input="updateTodoText"/>
Todo Text: {{ todo.getText() }}
</div>
@Component
public class TodoTextComponent implements IsVueComponent {
@Data Todo todo = new Todo("Hello World!");
@JsMethod
public void updateMessage(HTMLInputElement event) {
this.todo.setText(event.target.value);
}
}