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被注册为一个全局的变量,它是一个构造函数. ...
随机推荐
- 2.第一个Codefirst实例
1.什么是codefirst EF4.1中开始支持Code First .这种方式在领域设计模式中非常有用.使用Code First模式,你可以专注于领域设计,根据需要,为你一个领域的对象创建类集合, ...
- C盘Administrator中 .m2/repository里面是什么
${user.home}/.m2/repository文件夹是maven默认的本地仓库地址maven仓库分为远程仓库和本地仓库,当你在pom里配置依赖项目后,maven首先会从本地仓库查找该项目,如果 ...
- loadRunner之接口测试
接口测试需求: 1.脚本支持循环测试,并且每次测试的请求报文不一样(字段stbId每次请求不一样) 2.输出每次测试的请求报文和响应报文 3.根据响应报文判断接口调用是否成功 4.输出最终测试结果:循 ...
- Druid数据源配置入门
Druid是什么 Druid首先是一个数据库连接池.Druid是目前最好的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.BoneCP.Proxool.JBos ...
- webpack 导出、导入模块(及路径)
参考:https://blog.csdn.net/xyphf/article/details/83411552 (下面的代码亲测有效) 注:导入的模块的方法,只有两种方法 import 和 requ ...
- [CSP-S模拟测试72]题解
A.简单的序列 遇到括号匹配,先将左右括号转化为1和-1. 那么一个括号序列合法的必要条件:总和为0且所有时刻前缀和$\ge 0$. 用dp预处理出长度为$i$,总和为$j$的括号序列数量.那么如果p ...
- JavaScript--字符串与JSON对象相互转换
JSON.parse() 兼容性:Chrome,Firefox (Gecko) 3.5 (1.9.1),IE 8.0,Safari 4.0 JSON.parse('[1, 5, "false ...
- cs224d 作业 problem set2 (一) 用tensorflow纯手写实现sofmax 函数,线性判别分析,命名实体识别
Hi Dear Today we will use tensorflow to implement the softmax regression and linear classifier algor ...
- javascript函数调用的几种方式
function fn() { console.log(this.name); return "fn函数的返回值"; } /*1.方法调用*/ //方法调用,this指向win ...
- LeetCode N皇后 & N皇后 II
题目链接:https://leetcode-cn.com/problems/n-queens/ 题目链接:https://leetcode-cn.com/problems/n-queens-ii/ 题 ...