Vue学习笔记【4】——Vue指令之v-on
Vue指令之v-on
v-on指令介绍
直接使用指令
v-on使用简化指令
@绑定事件代码:
@事件名="methods中的方法名称"
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<div id="app">
<!-- Vue 中提供了 v-on: 事件绑定机制 -->
<input type="button" value="按钮" v-on:click="alert('hello')">
<input type="button" value="按钮" @click="show">
</div>
<script src="./lib/vue-2.4.0.js"></script>
<script>
var vm = new Vue({
el: '#app',
data: {
mytitle: '这是一个自己定义的title'
},
methods: { // 这个 methods属性中定义了当前Vue实例所有可用的方法
show: function () {
alert('Hello')
}
}
})
//原生js代码
/* document.getElementById('btn').onclick = function(){
alert('Hello')
} */
</script>
</body>
</html>
案例:跑马灯效果
实现步骤
第一步:导入Vue包
第二步:创建一个要控制的区域
第三步:定义一个vue实例
第四步:编写具体代码
代码分析
一、让文字动起来
1.给(唱起来~)按钮绑定一个点击事件 指令:v-on @
2.在按钮的事件处理函数中,写相关的业务逻辑代码:
拿到msg字符串,然后对字符串进行操作,substring
来进行对字符串的截取操作把第一个字符串截取,放到最后。
3.为了实现点击一下按钮,自动截取的功能,需要把2中的代码
放到一个定时器中去。
二、让文字停止
思路:利用setInterval返回的intervalID来停止定时器。但是
由于外部的函数不能获取到setInterval函数中的数据,所以我们要把
IntervalID的值获取后放入到data中。
1.在data中定义一个变量来存放intervalID,初始默认值为null。
2.为(停!)按钮绑定一个点击事件 指令:v-on @
遇到的问题:每点一次唱起来按钮,都会开启一个定时器,我们要在开
启定时器之前做一个判断,如果intervalId不为null,说明已经开启了
一个定时器,不必再新开启,如果intervalId为null,则开启定时器。
3.判断intervalID是否为null时出现的问题:
如果只写if(this.intervalId != null) return; 这一句,
这种方法点击完唱起来按钮后再点击停止按钮会出现一个问题——唱起来按钮失效了,
点击它文字不会再动起来,因为点击按钮后,虽然定时器被停止了,但是intervalId
没有初始化回null,每次都会进入这个if语句,永远不能再开启定时器,因此,每次
点击停止按钮后,都要吧this.intervalId重新赋值为null!
三、注意:
①在vm实例中,想要获取data上的数据,
或者调用methods中的方法,必须通过this.属性名或this.方法名来访问,
这里的this,就表示我们new出来的VM实例。
②VM实例会自动监听其data中所有数据的改变,一旦发生变化,立即更新,
同步到页面中。程序员只需要关心数据,不需要考虑如何重新渲染页面。
代码实现
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<!-- 第一步:导入Vue包 -->
<script src="./lib/vue-2.4.0.js"></script>
</head>
<body>
<!-- 第二步:创建一个要控制的区域 -->
<div id="app">
<!-- 第四步:编写具体代码 -->
<h4>{{ msg }}</h4>
<input type="button" value="唱起来~" @click="sing">
<input type="button" value="停!" @click="stop">
</div>
<!-- 第三步:定义一个vue实例-->
<script>
var vm = new Vue({
el:'#app',
data:{
msg:'大山滴子孙~呦!~~~~~爱太阳~咯~~~~',
intervalId:null //在data上定义intervalID
},
methods:{
sing(){//es6写法
if(this.intervalId != null) return;
// 使用es6语法中的箭头函数来写
this.intervalId = setInterval(() => {
//获取字符串开头的第一个字符
var start = this.msg.substring(0,1)
//获取字符串除开头第一个字符外的其他字符
var end = this.msg.substring(1)
//重新拼接得到新的字符串,并赋值给this.msg
this.msg = end+start
},400)
// 原来的写法
// var _this = this
// setInterval(function(){
// //获取字符串开头的第一个字符
// var start = this.msg.substring(0,1)
// //获取字符串除开头第一个字符外的其他字符
// var end = this.msg.substring(1)
// //重新拼接得到新的字符串,并赋值给this.msg
// this.msg = end+start
// },400)
},
stop(){//停止定时器
clearInterval(this.intervalId)
this.intervalId = null
}
}
})
</script>
</body>
</html>
Vue学习笔记【4】——Vue指令之v-on的更多相关文章
- 【Vue学习笔记】—— vue的基础语法 { }
学习笔记 作者:oMing vue v-on: 简称 @ <div id='app'> <button v-on:click='Show1'> </button> ...
- vue学习笔记(二)vue的生命周期和钩子函数
前言 通过上一章的学习,我们已经初步的了解了vue到底是什么东西,可以干什么,而这一篇博客主要介绍vue的生命周期和它常用的钩子函数,如果有学过java的园友可能有接触到在学习servlet的时候学过 ...
- vue学习笔记:vue的认识与特点与获取
Vue了解 Vue:读作 view Vue是一个渐进式框架 与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计. Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整 ...
- Vue学习笔记之Vue指令系统介绍
所谓指令系统,大家可以联想咱们的cmd命令行工具,只要我输入一条正确的指令,系统就开始干活了. 在vue中,指令系统,设置一些命令之后,来操作我们的数据属性,并展示到我们的DOM上. OK,接下来我们 ...
- vue学习笔记—bootstrap+vue用户管理
vue,读音view,简单易用的前端框架.特点如下: 1.一个mvvm的前端框架,内部做好了html中dom对象和后台用js语言定义的变量的双向绑定 2.中国人尤雨溪维护的个人项目,中文资料多,和go ...
- VUE学习笔记之vue cli 构建项目
一.环境搭建: 1.安装node.js 从node.js官网下载并安装node,安装过程很简单,一路"下一步"就可以了.安装完成之后,打开命令行工具(win+r,然后输入cmd), ...
- Vue学习笔记之Vue知识点补充
0x00 修饰符 .lazy 在默认情况下,v-model 在每次 input 事件触发后将输入框的值与数据进行同步 .你可以添加 lazy 修饰符,从而转变为使用 change 事件进行同步: &l ...
- Vue学习笔记之Vue学习前的准备工作
0x00 起步 1.扎实的HTML/CSS/Javascript基本功,这是前置条件. 2.不要用任何的构建项目工具,只用最简单的<script>,把教程里的例子模仿一遍,理解用法.不推荐 ...
- Vue学习笔记之Vue组件
0x00 前言 vue的核心基础就是组件的使用,玩好了组件才能将前面学的基础更好的运用起来.组件的使用更使我们的项目解耦合.更加符合vue的设计思想MVVM. 那接下来就跟我看一下如何在一个Vue实例 ...
- Vue学习笔记之Vue的使用
0x00 安装 对于新手来说,强烈建议大家使用<script>引入 0x01 引入vue.js文件 我们能发现,引入vue.js文件之后,Vue被注册为一个全局的变量,它是一个构造函数. ...
随机推荐
- eclipse设置tomcat部署目录地址
参考: https://blog.csdn.net/lvyuan1234/article/details/53418818 右键,open 操作前提是所有项目移除,并且右键clean掉相关数据! 修改 ...
- get和post 两种基本请求方式的区别
GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数. 你可能自己 ...
- 测试demo controllerweb.xml
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://w ...
- Kubernetes 健康检查的两种机制:Liveness 探测和 Readiness 探测
Kubernetes 健康检查的两种机制:Liveness 探测和 Readiness 探测,并实践了健康检查在 Scale Up 和 Rolling Update 场景中的应用.kubelet使用启 ...
- SVN server 服务端修改端口号
SVN server 服务端修改端口号 在实际使用中可能当安装svn server 服务后,发现与后续其他程序端口冲突, 1.打开svn server 管理界面->操作->properti ...
- Delphi直接读取XmL
有时,只需要用XML作一些小的应用,比如只是简单地保存日志或者一些配置,这时我们只需要直接读写XML就好,效率第一. Delphi盒子有一个直接读写XML文件 (例子和代码),其核心函数为下面两个函数 ...
- nginx查看变量值
nginx查看变量值 location / { echo $host; #域名 echo $remote_addr; echo $remote_user; echo $time_local; echo ...
- 利用core_pattern实现core文件的配置和管理
参考:https://xz.aliyun.com/t/1098 这里所说的core_pattern 指的是:/proc/sys/kernel/core_pattern. 我们知道在Linux系统中,如 ...
- 当前系统的CPU和内存的空闲百分比
设想我们有一个php页面A比较耗资源,因此在每次执行页面A中的代码前需要检测一下系统目前CPU和内存的空闲百分比.我们可以利用下面几个函数来解决这个问题 1 2 3 4 5 6 7 8 9 10 11 ...
- 公司-浪潮:浪潮/inspur
ylbtech-公司-浪潮:浪潮/inspur 浪潮集团有限公司,即浪潮集团,是中国本土综合实力强大的大型IT企业之一,中国领先的云计算.大数据服务商.浪潮集团旗下拥有浪潮信息.浪潮软件.浪潮国际.华 ...