初识Vue2(一):表单输入绑定(附Demo)

简介: 初识Vue2(一):表单输入绑定(附Demo)

在线演示

http://demo.xiongze.net/

回到顶部

下载地址

https://gitee.com/xiongze/Vue2.git

回到顶部

js引用

<!--这里可以自己下载下来引用,也可以使用外部动态链接引用-->

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

 

回到顶部

基础用法

你可以用 v-model 指令在表单<input><textarea> <select>素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。

尽管有些神奇,但 v-model 本质上不过是语法糖。它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。

v-model 会忽略所有表单元素的 valuecheckedselected attribute 的初始值而总是将 Vue 实例的数据作为数据来源。

你应该通过 JavaScript 在组件的 data 选项中声明初始值。

 

v-model 在内部为不同的输入元素使用不同的 property 并抛出不同的事件:

  • text 和 textarea 元素使用 value property 和 input 事件;
  • checkbox 和 radio 使用 checked property 和 change 事件;
  • select 字段将 value 作为 prop 并将 change 作为事件。

对于需要使用输入法 (如中文、日文、韩文等) 的语言,你会发现 v-model 不会在输入法组合文字过程中得到更新。

如果你也想处理这个过程,请使用 input 事件。

 

点击事件和提示框

HTML

<div id="example">
  <button v-on:click="say('我是按钮,你点击了我')">按钮点击</button>
</div>

JS

//一个vue的实例
new Vue({
    el: '#example',
    data: {
        msg: 'Hello!'
    },
   //函数(用于弹框)
     methods: {
        say: function (i) {
            alert(i)
        }
      },
});

计算机属性和侦听器

1、计算机属性

HTML

<div id="example">
  <div>计算属性:{{toUp}}</div>
  <inputtype="text" v-model="ipt2">
</div>

JS

//一个vue的实例
        new Vue({
            el: '#example',
            data: {
                msg: 'Hello!',
                ipt: '我是计算机属性'
            },
            //计算属性
            computed: {
                toUp: function () {
                    var that = this;
                    var temp = that.ipt;
                    return temp;
                }
            },
        });

这里我们声明了一个计算属性 toUp

你可以像绑定普通 property 一样在模板中绑定计算属性。

 

2、侦听器

虽然计算属性在大多数情况下更合适,但有时也需要一个自定义的侦听器。

这就是为什么 Vue 通过 watch  选项提供了一个更通用的方法,来响应数据的变化。

当需要在数据变化时执行异步或开销较大的操作时,这个方式是最有用的。

HTML

<div id="example">
  <input type="text" v-model="ipt2">
</div>

JS

//一个vue的实例
        new Vue({
            el: '#example',
            data: {
                msg: 'Hello!',
                ipt2: '我是观察者(侦听器)'
            },
          //函数(用于弹框)
            methods: {
                say: function (i) {
                    alert(i)
                }
            },
            //观察者
            watch: {
                // 如果 `ipt2` 发生改变,这个函数就会运行
                ipt2: function (newVal) {
                    this.say(newVal)
                    //console.log(this.ipt2);
                }
            }
        });

使用 watch 选项允许我们执行异步操作 (访问一个 API),限制我们执行该操作的频率,并在我们得到最终结果前,设置中间状态。这些都是计算属性无法做到的。

除了watch 选项之外,您还可以使用命令式的 vm.$watch API

文本

HTML

<div id="example">
   <input v-model="message" placeholder="单行文本">输入的值: {{ message }}
</div>

JS

//一个vue的实例
new Vue({
    el: '#example',
    message :"",
});

 

多行文本

HTML

<div id="example">
   <textarea v-model="message" placeholder="多行文本"></textarea><br />
    <span>输入的值:</span>
    <p style="white-space: pre-line;">{{ message }}</p>
</div>

JS

//一个vue的实例
new Vue({
    el: '#example',
    message :"",
});

自定义组件(简单):输出指定内容

在注册一个组件的时候,我们始终需要给它一个名字。比如在全局注册的时候我们已经看到了:

Vue.component('my-component-name', { /* ... */ })

该组件名就是 Vue.component 的第一个参数。

你给予组件的名字可能依赖于你打算拿它来做什么。

当直接在 DOM 中使用一个组件 (而不是在字符串模板或单文件组件) 的时候,

我们强烈推荐遵循 W3C 规范中的自定义组件名 (字母全小写且必须包含一个连字符)。

这会帮助你避免和当前以及未来的 HTML 元素相冲突。

你可以在风格指南中查阅到关于组件名的其它建议。

 

HTML

<div id="example">
  <simple></simple>
</div>

JS

// 注册一个全局自定义组件 simple
Vue.component("simple", Vue.extend({
    template: '<div>我是一个div块哦</div>'
}));
//一个vue的实例
new Vue({
    el: '#example'
});

自定义组件(复杂):输出一个ul无序列表

HTML

<div id="example">
  <do-list v-bind:data="list">
   </do-list>
</div>

JS

// 注册一个复杂全局自定义【组件】 do-list
Vue.component("do-list", Vue.extend({
    //(父子传参)子组件要显式地用 props 选项声明它预期的数据:
    props: ['data'],
    template: `
    <ul>
        <li v-for="item in data">{{item.name}}</li>
    </ul>
`
}));
//一个vue的实例
new Vue({
    el: '#example',
    list: [
        { name: '西游记', author: '吴承恩' },
        { name: '红楼梦', author: '曹雪芹' },
        { name: '水浒传', author: '施耐庵' },
        { name: '三国演义', author: '罗贯中' }
     ],
});

复选框

HTML

<div id="example">
    <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>
    <span>选中的值: {{ checkedNames }}</span>
</div>

JS

//一个vue的实例
new Vue({
    el: '#example',
    checkedNames: [],   //多选
});

 

单选按钮

HTML

<div id="example">
    <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>

JS

//一个vue的实例
new Vue({
    el: '#example',
    picked: '',    //单选
});

下拉选择框

HTML

<div id="example">
    <select v-model="selected">
        <option disabled value="">请选择</option>
        <option>Vue 1.x</option>
        <option>Vue 2.x</option>
        <option>Vue 3.x</option>
    </select>
    <span>选中的值: {{ selected }}</span>
</div>

JS

//一个vue的实例
new Vue({
    el: '#example',
    selected: ''  //单选框
});

如果 v-model 表达式的初始值未能匹配任何选项,<select> 元素将被渲染为“未选中”状态。

在 iOS 中,这会使用户无法选择第一个选项。因为这样的情况下,iOS 不会触发 change 事件。

因此,更推荐像上面这样提供一个值为空的禁用选项。

相关文章
|
Android开发
Android Studio APP开发入门之对话框Dialog的讲解及使用(附源码 包括提醒对话框,日期对话框,时间对话框)
Android Studio APP开发入门之对话框Dialog的讲解及使用(附源码 包括提醒对话框,日期对话框,时间对话框)
479 0
|
9月前
|
API 区块链
获取指定网页基础信息【TDK】免费API接口教程
该接口用于从标准网页中提取标题、关键词、描述和图标等信息。支持POST/GET请求,需提供用户ID、KEY及目标网址等参数,可选指定访问节点。返回状态码、信息提示及提取的内容。示例与详细文档见官网。
|
4月前
|
数据采集 存储 监控
实战案例:采集 51job 企业招聘信息
本文基于Feapder框架,从零开始搭建企业级招聘信息爬虫管道。内容涵盖基础概念(数据管道与Feapder特点)、生动比喻(快递系统类比爬虫流程)、技术场景(代理IP、Cookie管理)及实战案例(采集51job岗位信息并分类存储)。通过完整代码示例,展示如何配置代理、自定义中间件及Pipeline。无论产品经理还是学生,均可轻松上手,构建高效稳定的爬虫系统。
105 10
实战案例:采集 51job 企业招聘信息
|
6月前
|
存储 自然语言处理 安全
如何快速生成二维码,免费生成工具推荐
对于大多数个人和企业用户,首选草料二维码,简单免费,且是创立时间最长、用户量最大、口碑最好的二维码生成器,市面上80%的二维码都由其生成。如果对于有出海需求的电商用户,可以选择二维码彩虹。GoQR.me更适合快速生成简单二维码或批量生成。Unitag则适合希望深入定制的专业用户,但操作难度相对较高
如何快速生成二维码,免费生成工具推荐
|
10月前
|
监控 Devops Linux
推荐类似宝塔的开源面板工具
本文介绍了几款类似于宝塔面板的开源服务器管理工具,包括Websoft9、1Panel、Webmin和Cockpit。这些工具在易用性、功能性和安全性方面各有千秋,能够满足不同用户的需求,从一键部署应用到高级服务器管理,提供了丰富的选择。
1274 1
推荐类似宝塔的开源面板工具
|
JavaScript 前端开发
浅谈一下实例化
浅谈一下实例化
|
移动开发 JavaScript 安全
记录一次社会工程学工具Seeker+ngrok
今天偶然刷bi站,刷到seeker结合ngrok进行社会工程学钓鱼的教程,下面话不多说,直接开始!
|
Java API 开发工具
【Android】安Android Studio环境搭建注意点
【Android】安Android Studio环境搭建注意点
217 1
|
缓存 JavaScript API
vue3 生命周期(生命周期钩子 vs 生命周期选项 vs 缓存实例的生命周期)
vue3 生命周期(生命周期钩子 vs 生命周期选项 vs 缓存实例的生命周期)
315 0
|
存储 人工智能 安全
大环境下AI发展迅速,如何保证AI的安全问题?
保障AI安全的关键措施包括:数据隐私保护(加密、访问控制、脱敏、共享协议)、模型安全(验证、鲁棒性、监测、更新)、用户信息保护(透明收集、匿名化、保密协议)、网络安全(实时监测、防护措施)和合规伦理(遵守法规、融入设计)。此外,安全培训和意识提升也是重要一环。多角度策略确保AI技术的安全、健康和可持续发展。
2274 0