初识Vue2(一):表单输入绑定(附Demo)
在线演示
下载地址
js引用
<!--这里可以自己下载下来引用,也可以使用外部动态链接引用-->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
基础用法
你可以用 v-model 指令在表单<input>、<textarea> 及<select>素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。
尽管有些神奇,但 v-model 本质上不过是语法糖。它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。
v-model会忽略所有表单元素的value、checked、selectedattribute 的初始值而总是将 Vue 实例的数据作为数据来源。你应该通过 JavaScript 在组件的
data选项中声明初始值。
v-model 在内部为不同的输入元素使用不同的 property 并抛出不同的事件:
- text 和 textarea 元素使用
valueproperty 和input事件; - checkbox 和 radio 使用
checkedproperty 和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 事件。
因此,更推荐像上面这样提供一个值为空的禁用选项。
![]() 欢迎关注订阅微信公众号【熊泽有话说】,更多好玩易学知识等你来取
作者:熊泽-学习中的苦与乐 公众号:熊泽有话说 出处:https://www.cnblogs.com/xiongze520/p/14764147.html 创作不易,任何人或团体、机构全部转载或者部分转载、摘录,请在文章明显位置注明作者和原文链接。 |
初识Vue2(一):表单输入绑定(附Demo)的更多相关文章
- 前端MVC Vue2学习总结(五)——表单输入绑定、组件
一.表单输入绑定 1.1.基础用法 你可以用 v-model 指令在表单控件元素上创建双向数据绑定.它会根据控件类型自动选取正确的方法来更新元素.尽管有些神奇,但 v-model 本质上不过是语法糖, ...
- Vue的指令系统、计算属性和表单输入绑定
指令系统 指令 (Directives) 是带有 v- 前缀的特殊特性.指令特性的值预期是单个 JavaScript 表达式 (v-for 是例外情况,稍后我们再讨论).指令的职责是,当表达式的值改变 ...
- Blazor和Vue对比学习(基础1.9):表单输入绑定和验证,VeeValidate和EditFrom
这是基础部分的最后一章,内容比较简单,算是为基础部分来个HappyEnding.我们分三个部分来学习: 表单输入绑定 Vue的表单验证:VeeValidate Blazor的表单验证:EditForm ...
- Vue表单输入绑定(文本框和复选框)
文本框 <!DOCTYPE html><html> <head> <meta charset="utf-8"> ...
- Vue.js教程--基础2(事件处理 表单输入绑定
事件处理 表单输入绑定 事件处理 监听v-on 监听 DOM 事件,并在触发时运行一些 JavaScript 代码. 可以在v-on:click=''加内联语句. 有时也需要在内联语句处理器中访问原始 ...
- Vue学习计划基础笔记(五) - 表单输入绑定、组件基础
表单输入绑定.组件基础 目标: 熟练掌握vue中表单的处理方式 对之前学习的内容简单回顾一下,并写一个实例,学以致用(最好脱离文档) vue中表单的处理方式 vue中表单的处理使用了v-model指令 ...
- VUE:事件处理和表单输入绑定
事件处理 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...
- vue样式绑定、事件监听、表单输入绑定、响应接口
1.样式绑定 操作元素的 class 列表和内联样式是数据绑定的一个常见需求.因为它们都是属性,所以我们可以用 v-bind 处理它们:只需要通过表达式计算出字符串结果即可.不过,字符串拼接麻烦且易错 ...
- Vue(10)表单输入绑定v-model
v-model v-model指定可以实现表单值与属性的双向绑定.即表单元素中更改了值会自动的更新属性中的值,属性中的值更新了会自动更新表单中的值 绑定的属性和事件 v-model在内部为不同的输入元 ...
随机推荐
- 数字转人民币读法-python3
""" 2 把一个浮点数分解成证书备份和小数部分 3 """ 4 def divide(num): 5 intnum = int(num) ...
- js_笔记_8月7日记录_活动对象_作用域链_按值传递
活动对象:简单说就是这个函数的参数和显示声明的变量或函数. 函数内接受的参数实际是创建了一个局部变量:[形参名] = [传进来的值],js的函数传参只传值. 作用域链:执行流进入一个函数,会先创建出作 ...
- 隐藏页面元素 css
一.前言 在平常的样式排版中,我们经常遇到将某个模块隐藏的场景 通过css隐藏元素的方法有很多种,它们看起来实现的效果是一致的 但实际上每一种方法都有一丝轻微的不同,这些不同决定了在一些特定场合下使用 ...
- 扩展中国剩余定理(EXCRT)学习笔记
扩展中国剩余定理(EXCRT)学习笔记 用途 求解同余方程组 \(\begin{cases}x\equiv c_{1}\left( mod\ m_{1}\right) \\ x\equiv c_{2} ...
- elementui 表格格式化
<el-table-column prop="userType" label="角色" width="180" :formatter= ...
- java面试-内存分配与回收策略
1.对象优先在Eden分配 -Xms20M -Xmx20M java堆的大小20M -Xmn10M 新生代10M 老年代10M -XX:SurvivorRatio=8 新生代Eden与一个Surviv ...
- go中控制goroutine数量
控制goroutine数量 前言 控制goroutine的数量 通过channel+sync 使用semaphore 线程池 几个开源的线程池的设计 fasthttp中的协程池实现 Start Sto ...
- MySQL提升笔记(4)InnoDB存储结构
这一节本来计划开始索引的学习,但是在InnoDB存储引擎的索引里,存在一些数据存储结构的概念,这一节先了解一下InnodDB的逻辑存储结构,为索引的学习打好基础. 从InnoDB存储引擎的存储结构看, ...
- 做个开源博客学习Vite2 + Vue3 (四)实现博客功能
我们再来看一下管理类的设计. Composition API,就是组合API的意思,那么是不是应该把js代码分离出来,做成独立的管理类的形式呢? 这样代码可以更整洁一些,主要是setup里面的代码就不 ...
- Mediapipe 在RK3399PRO上的初探(二)(自定义Calculator)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
