
(相關資料圖)
Vue.js 是一個 MVVM 框架,即數據雙向綁定,即當數據發生變化的時候,視圖也就發生變化,當視圖發生變化的時候,數據也會跟著同步變化。這也算是 Vue.js 的精髓之處了。值得注意的是,我們所說的數據雙向綁定,一定是對于 UI 控件來說的,非 UI 控件不會涉及到數據雙向綁定。單向數據綁定是使用狀態管理工具的前提。如果我們使用??vuex?
?,那么數據流也是單項的,這時就會和雙向數據綁定有沖突。
在 Vue.js 中,如果使用??vuex?
?,實際上數據還是單向的,之所以說是數據雙向綁定,這是用的 UI 控件來說,對于我們處理表單,Vue.js 的雙向數據綁定用起來就特別舒服了。即兩者并不互斥,在全局性數據流使用單項,方便跟蹤;局部性數據流使用雙向,簡單易操作。
你可以用??v-model?
??指令在表單???
??、??
??及??
??元素上創建雙向數據綁定。它會根據控件類型自動選取正確的方法來更新元素。盡管有些神奇,但??v-model?
?本質上不過是語法糖。它負責監聽用戶的輸入事件以更新數據,并對一些極端場景進行一些特殊處理。
注意:??v-model?
?會忽略所有表單元素的??value?
?、??checked?
?、??selected?
?特性的初始值而總是將 Vue 實例的數據作為數據來源。你應該通過 JavaScript 在組件的??data?
?選項中聲明初始值。
單行文本:單行文本是:{{message}}
<script type="text/javascript"> var vm = new Vue({ el: "#vue", data: { message: "Hello Vue" } });</script>
多行文本:多行文本是:{{message}}
<script type="text/javascript"> var vm = new Vue({ el: "#vue", data: { message: "Hello Textarea" } });</script>
單復選框:
<script type="text/javascript"> var vm = new Vue({ el: "#vue", data: { checked: false } });</script>
多復選框: 選中的值: {{ checkedNames }}
<script type="text/javascript"> var vm = new Vue({ el: "#vue", data: { checkedNames: [] } });</script>
單選按鈕: 選中的值: {{ picked }}
<script type="text/javascript"> var vm = new Vue({ el: "#vue", data: { picked: "" } });</script>
下拉框: 選中的值: {{ selected }}
<script type="text/javascript"> var vm = new Vue({ el: "#vue", data: { selected: "" } });</script>
注意:如果??v-model?
?表達式的初始值未能匹配任何選項,??
?元素將被渲染為“未選中”狀態。在 iOS 中,這會使用戶無法選擇第一個選項。因為這樣的情況下,iOS 不會觸發 change 事件。因此,更推薦像上面這樣提供一個值為空的禁用選項。