VUE 入门基础(7)
八,事件处理器
监听事件
可以用v-on 指令监听DOM 事件来触发一些javaScript
<div id="example-1">
<button v-on:click="counter += 1">增加1</button>
<p>这个按钮被点击了{{ counter }} 次</p>
</div>
var example1 = new Vue({
el: "#example-1"
data: {
counter: 0
}
})
方法事件处理器
v-on 可以接收一个定义的方法来调用
<div id="example-2">
<butto v-on:click="greet">Greet</button>
</div>
var example2 = new Vue({
el:'#example-2',
data: {
name: 'Vue.js'
},
methods: {
greet: function (event) {
alert('Hello' + this.name + '!')
}
}
})
example2.greet()
内联事件处理方法
可以内联JavaScript语句
<div id="example-3">
<button v-on:click="say('hi')">Say hi</button>
<button v-on:click="say('what')">Say what</button>
</div>
new Vue({
el: '#example-3',
methods: {
alert(message)
}
})
有时候也需要内联语句处理器中访问原生DOM事件 可以用特殊变了$event 把它传入方法:
<button v-on:click="warn('For cannot be submitted ye.',$event)" >Submit</button>
methods: {
warn: function(message, event) {
if(event) event.preventDefault()
alert(message)
}
}
事件修饰符
为v-on 提供了 事件修饰符 通过由(.)表示的的指令后缀来调用修饰符。
.stop .prevent .capture .self .once
// 防止事件冒泡
<a v-on:click.stop="doThis"></a>
// 提交事件不在重载页面
<form v-on:submit.prevent="onSubmit"></form>
// 修饰符可以串联
<a v-on:click.stop.prevent="doThat"></a>
// 只有修饰符
<form v-on:submit.prevent></form>
// 添加事件监听器时使用事件捕获模式
<div v-on:click.capture="doTthis"></div>
// 只当事件在该元素本身(而不是子元素)触发时触发回调
<div v-on:click.self="doThat"></div>
按键修饰符
在监听键盘事件时,vue允许 v-on 在监听键盘事件时添加按键修饰符
// 只有在keyCode 是 13 是调用 vm.submit()
<input v-on:keyup.13="submit">
// 记住所有的 keyCode 比较困难, 所以Vue 为最常见的按键提供了别名:
<input v-on:keyup.enter="submit">
<input @keyup.enter="submit">
全部的按键名
.enter .tab .delete .esc .space .up .down .left .right
可以通过全局 config.keyCodes 对象自定义按键修饰符别名:
// 可以使用 v-on:keyup.f1
Vue.config.keyCodes.f1 = 112
按键修饰符
可以用如下修饰符开启鼠标或键盘事件监听,使在按键按下时发生响应。
.ctrl .alt .shift .meta
<!-- Alt + C -->
<input @keyup.alt.67="clear">
<!-- Ctrl + Click -->
<div @click.ctrl="doSomething">Do something</div>
九,表单控件绑定
基础用法
用v-model 指令在表单控件元素上创建双向数据绑定。
<input v-model="message" placeholder="edit me">
<p>Message is:{{ message}}</p>
多行文本
<span>Multiline message is:</span>
<p style="white-space: pre">{{ message }}</p>
<textarea v-model="message" placeholder="add multtiple 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="jack">john</label>
<input type="checkbox" id="mike" value="Mike" v-model="checkedNames">
<label for="jack">Mike</label>
<span>Checked names: {{checkedNames}}</span>
new Vue({
el:'...',
data: {
checkedNames: [ ]
}
})
单选按钮
<input type="radio" id="one" value="One" v-model="picked">
<lable for="one">One</lable>
<input type="radio" id="two" value="Two" v-model="picked">
<lable for="one">One</lable>
<span>Picked: {{ picked }}</span>
选择列表
单选列表:
<select v-model="selected">
<option>A</option>
<option>B</option>
<option>C</option>
</select>
多选列表(绑定到一个数组):
<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="opction in options" v-bind:value="option.value">
{{ option.text }}
</option>
</select>
<span>selected: {{ sekected}}</span>
new Vue({
el:'...',
data: {
selected: 'A',
options: [
{text:'One',value: 'A'},
{text:'Two',value: 'B'},
{text:'Three',value: 'C'}
]
}
})
绑定 value
对于单选按钮,勾选框及选择列表, 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-mode="selected">
<option value="abc">ABC</option>
</select>
复选框
<input type="checkbox" v-model="toggle" v-bind:true-value="a" v-bind:false-value="a">
// 当选中时
vm.toggle === vm.a
vm.toggle === vm.b
等选按钮
<input type="radio" v-model="pick" v-bind:value="a">
// 当选中时
vm.pcik === vm.a
选择列表设置
<select v-model="selected">
// 内联对象字面量
<option v-bind:value="{number: 123}">123</option>
</select>
// 当选中时
typeof vm.selected // object
vm.selected.number //123
修饰符
.lazy
在默认情况下, v-model 在 input 事件中同步输入框的值与数据 (除了 上述 IME 部分),但你可以添加一个修饰符 lazy ,从而转变为在 change 事件中同步:
// 在“change” 而不是在 "input" 时间中更新
<input v-model.lazy="msg">
.number
如果想自动将用户的输入值转为 Number 类型(如果原值的转换结果为 NaN 则返回原值),可以添加一个修饰符 number 给 v-model 来处理输入值:
<input v-model.number="age" type="number">
因为在 type="number" 时 HTML 中输入的值也总是会返回字符串类型。
.trim
如果要自动过滤用户输入的首尾空格,可以添加 trim 修饰符到 v-model 上过滤输入:
<input v-model.trim=msg>
VUE 入门基础(7)的更多相关文章
- Vue学习记录第一篇——Vue入门基础
前面的话 Vue中文文档写得很好,界面清爽,内容翔实.但文档毕竟不是教程,文档一上来出现了大量的新概念,对于新手而言,并不友好.个人还是比较喜欢类似于<JS高级程序设计>的风格,从浅入深, ...
- Vue入门基础
前面的话 Vue中文文档写得很好,界面清爽,内容翔实.但文档毕竟不是教程,文档一上来出现了大量的新概念,对于新手而言,并不友好.个人还是比较喜欢类似于<JS高级程序设计>的风格,从浅入深, ...
- vue入门基础知识点测试
vue入门基础知识点测试 1.文本(值绑定){{var}}----控制<div></div>的值显示当前时间,且1秒更新一次.(可查阅 setinterval 函数,时间Dat ...
- Vue入门基础(火柴)
前言 由于个人十分欣赏博友——小火柴的蓝色理想,他的博文我看了大多数,觉得十分的精彩,然而很多都是看后即忘.我想除了没有经常动手敲代码,更可能是在看的时候忽略了很多细节,因此打算把他的博文通通给“抄袭 ...
- VUE 入门基础(8)
十,组件 使用组件 注册 可以通过以下这种方式创建一个Vue实例 new Vue({ el: '#some-element', }) 注册一个全局组件,你可以使用Vue.component(tagNa ...
- VUE 入门基础(4)
四,计算属性 基础例子 <div id='example'> <p>0riginal message: "{{message}}"</p> &l ...
- 02 . Vue入门基础之条件渲染,列表渲染,事件处理器,表单控件绑定
vue基础 声明式渲染 Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统 Example1 <!DOCTYPE html> <html> ...
- VUE 入门基础(9)
十一,深入响应式原理 声明响应式属性 由于Vue不允许动态添加根级响应式属性,所以你必须在初始化实例钱声明根级响应式属性,哪怕只有一个空值. var vm = new Vue({ data:{ // ...
- VUE 入门基础(6)
六,条件渲染 v-if 添加一个条件块 <h1 v-if="ok">Yes</h1> 也可以用v-else 添加else 块 <template> ...
随机推荐
- Beta版本冲刺——day7
No Bug 031402401鲍亮 031402402曹鑫杰 031402403常松 031402412林淋 031402418汪培侨 031402426许秋鑫 站立式会议 今日计划表 人员 工作 ...
- gRaphael——JavaScript 矢量图表库:两行代码实现精美图表
gRaphael 是一个致力于帮助开发人员在网页中绘制各种精美图表的 Javascript 库,基于强大的 Raphael 矢量图形库.你只需要编写几行简单的代码就能创建出精美的条形图.饼图.点图和曲 ...
- HttpWebRequest出错 服务器提交了协议冲突. Section=ResponseHeader Detail=CR 后面必须是 LF
服务器提交了协议冲突. Section=ResponseHeader Detail=CR 后面必须是 LF The server committed a protocol violation. Se ...
- Asp.net中文件的压缩与解压
这里笔者为大家介绍在asp.net中使用文件的压缩与解压.在asp.net中使用压缩给大家带来的好处是显而易见的,首先是减小了服务器端文件存储的空间,其次下载时候下载的是压缩文件想必也会有效果吧,特别 ...
- javax.servlet.http.HttpServlet was not found
我们遇到的错误显示如下: 我们右击有错误提示的文件夹,如下: 我们点击"配置构建路径",如下: 我们再点击"添加库",如下: 我们选中上图中标出 ...
- mybatis实战教程(mybatis in action)之四:实现关联数据的查询
有了前面几章的基础,对一些简单的应用是可以处理的,但在实际项目中,经常是关联表的查询,比如最常见到的多对一,一对多等.这些查询是如何处理的呢,这一讲就讲这个问题.我们首先创建一个Article 这个表 ...
- Python实现支持并发、断点续传的FTP
参考网上一个FTP程序,重写了一遍,并稍加扩展 一.要求 1. 支持多用户同时登录 2. 可以注册用户,密码使用md5加密 3. 可以登录已注册用户 4. 支持cd切换目录,ls查看目录子文件 5. ...
- Oracle行转列操作
有时候我们在展示表中数据的时候,需要将行转为列来显示,如以下形式: 原表结构展示如下:---------------------------产品名称 销售额 季度------------ ...
- 基于WebDriver&TestNG 实现自己的Annotation @TakeScreenshotOnFailure
相信用过Selenium WebDriver 的朋友都应该知道如何使用WebDriver API实现Take Screenshot的功能. 在这篇文章里,我主要来介绍对failed tests实现 t ...
- C#:String.Format数字格式化输出 {0:N2} {0:D2} {0:C2}等等
int a = 12345678; //格式为sring输出// Label1.Text = string.Format("asdfadsf{0}adsfasdf",a); / ...