在之前的範例掩飾中,我們透過一個下拉式選單更改後來改變網頁中的值,實現的方法有兩種:
當然因為我們已經在學習框架了,所以當然比較推崇透過方法2來完成這件事,但今天要分享另外一個作法,他能讓我們利用更快的方式來完成這個效果,也就是v-model,大家可以參考下面的程式碼:
<div id="app">
<p>
<select v-model="framework.type">
<option value="Frontend">Frontend</option>
<option value="Backend">Backend</option>
</select>
</p>
<p>
<select v-model="framework.name">
<option value="Vue">Vue</option>
<option value="React">React</option>
<option value="Angular">Angular</option>
<option value="Laravel">Laravel</option>
<option value="CakePHP">CakePHP</option>
<option value="Django">Django</option>
</select>
</p>
<p>Type: {{ framework.type }}</p>
<p>Framework: {{ framework.name }}</p>
</div>
<script>
const { reactive } = Vue;
const app = {
setup(){
const framework = reactive({
type: "Frontend",
name: "Vue",
})
return {framework};
}
}
const myVue = Vue.createApp(app).mount("#app");
</script>
仔細看看程式碼,你會發現並沒有任何的Script去協助更新數值與畫面,但其結果卻相同。
是不是更方便了!但當然如果情況稍微複雜一些,還是透過呼叫Method來處理會具有更多的彈性。
除此了Input text以外,還有許多的表單元素能夠透過v-model來進行資料綁定:
<div id="app" style="display:flex">
<div style="width: 50%;">
<p><input v-model="state.inputValue"></p>
<p>
<input type="checkbox" v-model="state.checkboxValue" id="Item1" value="Item1">
<label for="Item1">Item1</label>
<input type="checkbox" v-model="state.checkboxValue" id="Item2" value="Item2">
<label for="Item2">Item2</label>
<input type="checkbox" v-model="state.checkboxValue" id="Item3" value="Item3">
<label for="Item3">Item3</label>
</p>
<p>
<input type="radio" id="Frontend" value="Frontend" v-model="state.radioValue">
<label for="Frontend">Frontend</label>
<input type="radio" id="Backend" value="Backend" v-model="state.radioValue">
<label for="Backend">Backend</label>
</p>
<p>
<select v-model="state.selectValue">
<option disabled value="" selected>Please select one</option>
<option value="Option1">Option1</option>
<option value="Option2">Option2</option>
<option value="Option3">Option3</option>
</select>
</p>
<p><textarea v-model="state.textareaValue"></textarea></p>
</div>
<div style="width: 50%;">
<p>Input: {{ state.inputValue }}</p>
<p>Checkbox: {{ state.checkboxValue }}</p>
<p>Radio: {{ state.radioValue }}</p>
<p>Select: {{ state.selectValue }}</p>
<p>Textarea: {{ state.textareaValue }}</p>
</div>
</div>
<script>
const { reactive } = Vue;
const app = {
setup() {
const state = reactive({
inputValue: "",
checkboxValue: [],
radioValue: "",
selectValue: "",
textareaValue: "",
})
return {
state
};
}
}
const myVue = Vue.createApp(app).mount("#app");
</script>
同樣在v-model中也能加入一些修飾符來加強運用,可以使用的修飾符如下:
雙向資料綁定在前、後端分離的開發模式下,更能夠發揮他的優勢,可以讓我們少寫許多頁面更新的程式,也就是我們前面提到事半功倍的框架效果。