当前位置: 首页 > news >正文

Vue入门【四】-- 事件机制与双向数据绑定

首先我们要了解事件机制的特点:

  1. 事件三要素
  2. 事件绑定
  3. 事件流
  4. 事件对象
  5. 事件代理
  6. 事件类型

这些是在DOM阶段就熟悉的概念,在vue中依旧存在。

1.事件绑定

可以用 v-on 指令监听DOM 事件,并在触发时运行一些 JavaScript 代码。

v-on 还可以接收一个需要调用的方法名称:

<button v-on:click="handler">good</button> 
// 调用的方法名称handler

……

methods: { 

        handler: function (event) {
             if (event) { 
                alert(event.target.tagName)

     } 
// event 是原生 DOM 事件 

} }

除了直接绑定到一个方法,也可以在内联 JavaScript 语句中调用方法,通过$event传递原生事件对象:

<button v-on:click="say('hi',$event)">Say hi</button>

        methods: {

                 say: function (message,event) {

                         alert(message) } }

实例:

<body>
	<div id="app">
        <button @click="handler">一号点击</button>
        <!-- vue将事件对象变成vue的内部属性 -->
        <button @click="hand($event,123)">二号点击</button>
    </div>
	<script>
		new Vue({
			el:"#app",
			data:{
				
			},
			methods:{
                handler(event){
                    console.log(event);
                },
                hand(e, n){
                    console.log(e, n); // e--$event  n--123
                }
            }
		})
	</script>
</body>

注意:  v-on:事件名  也可以直接简写为  @事件名

2.事件修饰符 

事件修饰符 ---- 在事件处理程序中调用 event.preventDefault() 或 event.stopPropagation() 是非常常见的需求。Vue提供了更好的方式:事件处理函数只有纯粹的数据逻辑,而不是去处理 DOM 事件细节,我们可以通过事件修饰符来完成这些细节。

详见:Vue入门【一】-- 基本模板语法_愛 / 滥 / 時的博客-CSDN博客

 3.双向数据绑定

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

 Vue 是数据双向绑定的框架,双向绑定由三个重要部分构成:

  • 数据层(Model):应用的数据及业务逻辑
  • 视图层(View):应用的展示效果,各类UI组件
  • 业务逻辑层(ViewModel):框架封装的核心,它负责将数据与视图关联起来
<body>
	<div id="app">
		<!-- v-model 数据改变视图也会更新 用户的交互也会更新数据 -->
		{{stu}}
		<!-- lazy 修饰符 输入完毕按下回车后才会更新到数据层 -->
		<!-- 用户名:<input type="text" v-model.lazy="stu.username"> -->
		<!-- trim 修饰符 自动去除前后空格 -->
		用户名:<input type="text" v-model.trim="stu.username">
		<!-- number修饰符 将原本输入的string转换为number类型的值 -->
		密码:<input type="password" v-model.number="stu.password">
		<br>
		<!-- 单选框 -->
		男:<input type="radio" v-model="stu.gender" value="male">
		女:<input type="radio" v-model="stu.gender" value="female">
		<!-- 复选框 -->
		蜡笔小新:<input type="checkbox" v-model="stu.hobby" value="xin">
		混沌武士:<input type="checkbox" v-model="stu.hobby" value="hun">
		星际牛仔:<input type="checkbox" v-model="stu.hobby" value="niu">
		<!-- 多行文本框 -->
		<textarea v-model="stu.introduce"></textarea>
		<!-- 下拉框 -->
		<select v-model="stu.city">
			<option value="guilin">桂林</option>
			<option value="liuzhou">柳州</option>
			<option value="nanning">南宁</option>
		</select>
	</div>
	<script>
		new Vue({
			el:"#app",
			data:{
				// 表单对象
				stu:{
					hobby:[]
				}
			},
			methods:{}
		})
	</script>
</body>
</html>

可以看到,当我们在表单控件中的输入与选择都被{{}}插值语法渲染到了页面上:

相关文章:

  • 小型超市管理系统的设计与实现 毕业设计-附源码011136
  • R语言缺失时间序列的填充:补齐时间序列数据中所有缺失的时间索引、使用na.locf函数将缺失值NA替换为前序时刻最近的值
  • 26.STM32 SPI通信接口
  • [JS] node.js 入门
  • 卸载mysq并重新安装教程
  • 合并后 ETH 的供应变化以及是否会出现通缩
  • 装饰器模式【Java设计模式】
  • Qt 学习(四) —— qrc资源文件介绍与使用
  • 【云原生之Docker实战】使用Docker部署Alist网盘直链程序
  • 数据结构与算法——左程云05
  • STM32——2.4G无线通信实验
  • 【C语言数据结构】03.双链表
  • 非零基础自学Java (老师:韩顺平) 第23章 反射(reflection) 23.2 反射机制
  • (一)Java算法:二分查找
  • [前缀和]Tokitsukaze and Strange Inequality Codeforces1678C
  • 【391天】每日项目总结系列128(2018.03.03)
  • 【RocksDB】TransactionDB源码分析
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • Facebook AccountKit 接入的坑点
  • Hexo+码云+git快速搭建免费的静态Blog
  • Javascripit类型转换比较那点事儿,双等号(==)
  • Javascript 原型链
  • JavaScript函数式编程(一)
  • JS笔记四:作用域、变量(函数)提升
  • overflow: hidden IE7无效
  • React16时代,该用什么姿势写 React ?
  • 前端临床手札——文件上传
  • 如何选择开源的机器学习框架?
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 试着探索高并发下的系统架构面貌
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 《码出高效》学习笔记与书中错误记录
  • ​queue --- 一个同步的队列类​
  • ​决定德拉瓦州地区版图的关键历史事件
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • $(selector).each()和$.each()的区别
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (一)RocketMQ初步认识
  • .Net IE10 _doPostBack 未定义
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .Net 知识杂记
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .NET连接MongoDB数据库实例教程
  • .NET设计模式(11):组合模式(Composite Pattern)
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • @html.ActionLink的几种参数格式
  • @WebServiceClient注解,wsdlLocation 可配置
  • @zabbix数据库历史与趋势数据占用优化(mysql存储查询)
  • [1]-基于图搜索的路径规划基础
  • [ANT] 项目中应用ANT