Vue.js 学习(8) -- v-model: 表单控件绑定
2017-05-23 16:57
941 查看
基础
v-model可以在表单控件元素(例如input)上创建双向数据绑定:代码修改v-model后的变量值,那么控件的值也会随之改变;控件的值被用户修改,v-model绑定的变量也会被改变。
其实,v-model 本质上不过是语法糖,它负责监听用户的输入事件以更新数据,并特别处理一些极端的例子。
几个最简单的栗子:
input:
<input v-model="message" placeholder="edit me"> <p>Message is: {{ message }}</p>
运行结果就是,当用户在input对话框内输入信息时,p标签中的内容也会实时更新。
textarea:
<span>Multiline message is:</span> <p style="white-space: pre">{{ message }}</p> <br> <textarea v-model="message" placeholder="add multiple lines"></textarea>
复选框:
<input type="checkbox" id="checkbox" v-model="checked"> <label for="checkbox">{{ checked }}</label>
多个复选框:
<input type="checkbox" id="jack" value="Jack" v-model="checkedNames"> <label for="jack">Jack</label> <input type="checkbox" id="john" value="John" v-model="checkedNames"> <label for="john">John</label> <input type="checkbox" id="mike" value="Mike" v-model="checkedNames"> <label for="mike">Mike</label> <br> <span>Checked names: {{ checkedNames }}</span>
new Vue({ el: '...', data: { checkedNames: [] } })
单选按钮:
<input type="radio" id="one" value="One" v-model="picked"> <label for="one">One</label> <br> <input type="radio" id="two" value="Two" v-model="picked"> <label for="two">Two</label> <br> <span>Picked: {{ picked }}</span>
单选列表:
<select v-model="selected"> <option disabled value="">Please select one</option> <option>A</option> <option>B</option> <option>C</option> </select> <span>Selected: {{ selected }}</span>
多选列表:
<select v-model="selected" multiple> <option>A</option> <option>B</option> <option>C</option> </select> <br> <span>Selected: {{ selected }}</span>
多选列表结合v-for指令:
<select v-model="selected"> <option v-for="option in options" v-bind:value="option.value"> {{ option.text }} </option> </select> <span>Selected: {{ selected }}</span>
new Vue({ el: '...', data: { selected: 'A', options: [ { text: 'One', value: 'A' }, { text: 'Two', value: 'B' }, { text: 'Three', value: 'C' } ] } })
进阶:v-model & v-bind
当我们使用v-model将单选按钮,勾选框及选择列表等元素与变量双向绑定时,通常都是将变量值绑定为这些元素的value:<!-- 当选中时,`picked` 为字符串 "a" --> <input type="radio" v-model="picked" value="a"> <!-- `toggle` 为 true 或 false --> <input type="checkbox" v-model="toggle"> <!-- 当选中时,`selected` 为字符串 "abc" --> <select v-model="selected"> <option value="abc">ABC</option> </select>
但是有时候,我们希望value是动态变化的,也就是,希望value是vue实例的一个动态属性。这是,我们可以使用前几节学过的v-bind来实现:
checkbox:
<input type="checkbox" v-model="toggle" v-bind:true-value="a" v-bind:false-value="b" >
// 当选中时 vm.toggle === vm.a // 当没有选中时 vm.toggle === vm.b
radio:
<input type="radio" v-model="pick" v-bind:value="a">
// 当选中时 vm.pick === vm.a
select:
<select v-model="selected"> <!-- 内联对象字面量 --> <option v-bind:value="{ number: 123 }">123</option> </select>
// 当选中时 typeof vm.selected // -> 'object' vm.selected.number // -> 123
修饰符
1、.lazy在默认情况下, v-model 在 input 事件中同步输入框的值与数据 (除了上述 IME 部分),但你可以添加一个修饰符 lazy ,从而转变为在 change 事件中同步。
2、number
如果想自动将用户的输入值转为 Number 类型(如果原值的转换结果为 NaN 则返回原值),可以添加一个修饰符 number 给 v-model 来处理输入值。
<input v-model.number="age" type="number">
3、trim
如果要自动过滤用户输入的首尾空格,可以添加 trim 修饰符到 v-model 上过滤输入。
<input v-model.trim="msg">
相关文章推荐
- vue.js 表单控件 输入绑定 v-model的使用
- vue基础 学习之v-model (表单控件绑定)
- Vue.js 学习8 表单控件绑定
- 学习vue.js表单控件绑定操作
- Vue.js学习 Item9 – 表单控件绑定
- Vue.js学习 Item9 – 表单控件绑定
- vue.js基础知识篇(3):计算属性、表单控件绑定
- Vue.js-----轻量高效的MVVM框架(七、表单控件绑定)
- Vue.js每天必学之表单控件绑定
- 06、vue.js 之表单控件绑定
- Vue学习笔记之表单输入控件绑定
- Vue.js学习笔记:v-model双向绑定
- Vue.js实例学习:表单输入绑定
- Vue.js入门学习--表单input的绑定(六)
- Vue.js -表单控件绑定
- Vue.js笔记-表单控件绑定
- 表单控件绑定vue.js
- vue v-model表单控件绑定详解
- vue表单控件绑定
- vue表单控件绑定