Vue系列教程(10)- Model数据内容双向绑定(v-model)

简介: Vue系列教程(10)- Model数据内容双向绑定(v-model)

1. 引言

通过前面的章节,我们已经学会了vue的事件绑定,有兴趣的同学可以参阅下:

本文主要讲的是Model的数据 双向 绑定 。

2. Model数据双向绑定

在前面,我们知道Vue.js是一个MVVM框架, 即数据双向绑定, 即当数据发生变化的时候, 视图也就发生变化。

当然,当视图发生变化的时候,数据也会跟着同步变化。这也算是Vue.js的精髓之处了。

简单的说,就是可以使用Vue里面的v-model指令声明在标签中,当标签中的值发生改变,Vue里面的model值也会发生改变。

接下来举些例子。

3. 表单示例

3.1 单行文本

示例代码:

<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--1.导入Vue.js-->
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
</head>
<body>
<div id="app">
    输入的文本:
    <label>
        <input type="text" v-model="message" value="hello">
    </label>{{message}}
</div>
<script type="text/javascript">
    var vm = new Vue({
        el: "#app",
        data: {
            message: ""
        }
    });
</script>
</body>
</html>

启动程序,在文本框里输入内容,可以看到后面的值也会随着变化:

当然,我们控制台里也是可以修改message里的值的:

这就是所谓的Model数据内容双向绑定了。既可以通过视图来修改Model,也可以通过修改Model来控制视图,妙哉!

接下来讲解表单的几种典型的写法,大同小异便不再详述。

3.2 多行文本

示例代码:

<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--1.导入Vue.js-->
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
</head>
<body>
<div id="app">
    多行文本:<textarea v-model="message"></textarea>&nbsp;&nbsp;多行文本是:{{message}}
</div>
<script type="text/javascript">
   var vm = new Vue({
        el: "#app",
        data: {
            message: "Hello hello!"
        }
    });
</script>
</body>
</html>

启动后,内容如下:

3.3 单选框

示例代码:

<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--1.导入Vue.js-->
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
</head>
<body>
<div id="app">
    单选框:
    <input type="checkbox" id="checkbox" v-model="checked">
    &nbsp;&nbsp;
    <label for="checkbox">{{checked}}</label>
</div>
<script type="text/javascript">
   var vm = new Vue({
        el: "#app",
        data: {
            checked: false
        }
    });
</script>
</body>
</html>

启动程序后,效果如下:

3.4 复选框

示例代码:

<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--1.导入Vue.js-->
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
</head>
<body>
<div id="app">
    多选框:
    <input type="checkbox" id="jack" value="Jack" v-model="checkedNames">
    <label>Jack</label>
    <input type="checkbox" id="join" value="Join" v-model="checkedNames">
    <label>Join</label>
    <input type="checkbox" id="mike" value="Mike" v-model="checkedNames">
    <label>Mike</label>
    <span>选中的值:{{checkedNames}}</span>
</div>
<script type="text/javascript">
    var vm = new Vue({
        el: "#app",
        data: {
            checkedNames: []
        }
    });
</script>
</body>
</html>

效果图如下:

3.5 单选按钮

示例代码:

<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--1.导入Vue.js-->
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
</head>
<body>
<div id="app">
    单选框按钮
    <input type="radio" id="one" value="One" v-model="picked">
    <label for="one">One</label>
    <input type="radio" id="two" value="Two" v-model="picked">
    <label for="two">Two</label>
    <span>选中的值:{{picked}}</span>
</div>
<script type="text/javascript">
  var vm = new Vue({
        el: "#app",
        data: {
            picked: 'Two'
        }
    });
</script>
</body>
</html>

效果如下:

3.6 下拉框

示例代码:

<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--1.导入Vue.js-->
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
</head>
<body>
<div id="app">
    下拉框:
    <label>
        <select v-model="pan">
            <option value="" disabled>---请选择---</option>
            <option>A</option>
            <option>B</option>
            <option>C</option>
            <option>D</option>
        </select>
    </label>
    <span>value:{{pan}}</span>
</div>
<script type="text/javascript">
  var vm = new Vue({
        el: "#app",
        data: {
            pan: "A"
        }
    });
</script>
</body>
</html>

效果如下:

本文完!

目录
相关文章
|
9月前
|
JavaScript
Vue中如何实现兄弟组件之间的通信
在Vue中,兄弟组件可通过父组件中转、事件总线、Vuex/Pinia或provide/inject实现通信。小型项目推荐父组件中转或事件总线,大型项目建议使用Pinia等状态管理工具,确保数据流清晰可控,避免内存泄漏。
774 2
|
8月前
|
缓存 JavaScript
vue中的keep-alive问题(2)
vue中的keep-alive问题(2)
639 137
|
11月前
|
JavaScript 安全
在 Vue 中,如何在回调函数中正确使用 this?
在 Vue 中,如何在回调函数中正确使用 this?
550 0
|
JavaScript 前端开发 编译器
揭密 Vue 的双向绑定
Vue 中需要输入什么内容的时候,自然会想到使用 <input v-model="xxx" /> 的方式来实现双向绑定。下面是一个最简单的示例 JsFiddle 演示 https://jsfiddle.net/0okxhc6f/ 在这个示例的输入框中输入的内容,会随后呈现出来。
1337 0
|
JavaScript 前端开发 编译器
揭密 Vue 的双向绑定
Vue 中需要输入什么内容的时候,自然会想到使用 的方式来实现双向绑定。下面是一个最简单的示例 剖析Vue原理&实现双向绑定MVVM What's your name: Hello {{ name }} new Vue({ el: "#app", data: { name: "" } }); JsFiddle 演示https://jsfiddle.net/0okxhc6f/ 在这个示例的输入框中输入的内容,会随后呈现出来。
1126 0
|
人工智能 JavaScript 算法
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
1210 0
|
JavaScript
vue实现任务周期cron表达式选择组件
vue实现任务周期cron表达式选择组件
1496 4
|
JavaScript UED
用组件懒加载优化Vue应用性能
用组件懒加载优化Vue应用性能
|
JavaScript 数据可视化 前端开发
基于 Vue 与 D3 的可拖拽拓扑图技术方案及应用案例解析
本文介绍了基于Vue和D3实现可拖拽拓扑图的技术方案与应用实例。通过Vue构建用户界面和交互逻辑,结合D3强大的数据可视化能力,实现了力导向布局、节点拖拽、交互事件等功能。文章详细讲解了数据模型设计、拖拽功能实现、组件封装及高级扩展(如节点类型定制、连接样式优化等),并提供了性能优化方案以应对大数据量场景。最终,展示了基础网络拓扑、实时更新拓扑等应用实例,为开发者提供了一套完整的实现思路和实践经验。
1753 78
|
缓存 JavaScript 前端开发
Vue 基础语法介绍
Vue 基础语法介绍

热门文章

最新文章