Vue中可以使用v-model指令来实现数据双向绑定,下面本篇文章就来带大家了解一下v-model指令,希望对大家有所帮助!
![]() 通过前面的学习,我们可以顺利的在Vue中将数据源渲染到HTML的DOM元素中,但很多时候我们希望能控制数据源。也就是数据绑定,并且与其通讯。简单的说,怎么在Vue中实现数据的双向绑定。这种场景一般都是在表单的操作情景中。在Vue中可以使用 基础用法在Vue中,通过 比如: <!-- Template -->
<h1>{{ message }}</h1>
let app = new Vue({
el: '#app',
data: {
message: 'Hello W3cplus! (^_^)'
}
})
基于上面的示例,咱们修改一下需求,我们想通过一个 <!-- Template -->
<div id="app">
<div>
<input type="text" v-model="message" placeholder="Hello W3cplus!(^_^)" />
</div>
<h1>{{ message }}</h1>
</div>
从效果中可以看出,修改 而这里关键点就是使用了
在Vue中, 单行文本输入框前面演示的示例其实就是单行文本输入框的效果。 这里的 <!-- Template -->
<div id="app">
<div>
<input type="text" v-model="message" placeholder="Hello W3cplus!(^_^)" />
</div>
<h1>{{ message }}</h1>
</div>同样的,在Vue实例中,需要指定 let app = new Vue({
el: '#app',
data: {
message: 'Hello W3cplus! (^_^)'
}
})刷新你的浏览器,当你修改
多行文本域多行文本域 <!-- Template -->
<div id="app">
<div>
<textarea v-model="message" cols="30" rows="5"></textarea>
</div>
<h2>{{ message }}</h2>
</div>咱们在
小结一下:当使用文本
复选框在Vue中的复选框通过 <!-- Template -->
<div>
<input type="checkbox" v-model="checked" id="checkbox" />
<label for="checkbox">{{checked}}</label>
</div>
// JavaScript
let app = new Vue({
data: {
checked: false
}
})刷新浏览器,当复选框选中的时候,
不知道你跟我是不是同样的好奇,如果
是不是很神奇,虽然默认选中,并且点击之后就在 上面的示例,咱们只使用单个复选框,从效果上告诉我们 <input type="checkbox" value="foo" v-model="isChecked" /> 将和下面的代码相同: <input type="checkbox" value="foo" :checked="!!isChecked" @change="e => isChecked = e.target.checked" /> 如果想要它是非布尔值,可以使用 <input type="checkbox" value="foo" v-model="isChecked" true-value="1" false-value="0"> 与以下代码相同 <input type="checkbox" value="foo" :checked="isChecked =='1'" @change="e => isChecked = e.target.checked?'1':'0'"> 单一复选框的情况差不多就是这样。如果有多个复选框共享一个数据源( <!-- Template -->
<div>
<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>
</div>
<div>选中的值:{{checkedNames}}</div>
// JavaScript
var app = new Vue({
el: '#app',
data: {
checkedNames: []
}
})效果如下:
当我们使用多个复选框时, 单选按钮
<!-- Template -->
<div id="app">
<div>
<input type="radio" v-model="selected" value="CSS" id="css"/>
<label for="css">CSS</label>
<input type="radio" v-model="selected" value="HTML" id="html"/>
<label for="html">HTML</label>
<input type="radio" v-model="selected" value="JavaScript" id="javascript"/>
<label for="javascript">JavaScript</label>
<br>
<div>你最喜欢的是:{{selected}}</div>
</div>
</div>
// JavaScript
var app = new Vue({
el: '#app',
data: {
selected: null
}
})更新浏览器,看到的效果如下:
选择框
<!-- Template -->
<div id="app">
<h1>选择框</h1>
<div>
<select v-model="selected">
<option disabled value="">请选择</option>
<option>CSS</option>
<option>HTML</option>
<option>JavaScript</option>
</select>
<span>请选择: {{ selected }}</span>
</div>
<div>
<select v-model="multipleSelected" multiple>
<option>CSS</option>
<option>HTML</option>
<option>JavaScript</option>
<option>PHP</option>
</select>
<span>请选择:{{multipleSelected}}</span>
</div>
</div>
// JavaScript
var app = new Vue({
el: '#app',
data: {
selected: null,
multipleSelected: []
}
})效果如下:
如果 对于选择框,如果是动态选择框的话,我们可以利用前面学习的 <!-- Template -->
<div id="app">
<select v-model="selected">
<option v-for="option in options" v-bind:value="option.value">
{{ option.text }}
</option>
</select>
<div>你选择了: {{ selected }}</div>
</div>
// JavaScript
let app = new Vue({
el: '#pp',
data: {
selected: '请选择',
options: [
{ text: 'One', value: 'CSS' },
{ text: 'Two', value: 'HTML' },
{ text: 'Three', value: 'JavaScript' }
]
}
})效果是什么样呢?自己动手写一下。这里我们用到了Vue的一个新指令,那就是 上面向大家展示了
|
