Vue指令之v-on

v-on指令介绍

  1. 直接使用指令v-on

  2. 使用简化指令@

  3. 绑定事件代码:@事件名="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的更多相关文章

  1. 【Vue学习笔记】—— vue的基础语法 { }

    学习笔记 作者:oMing vue v-on: 简称 @ <div id='app'> <button v-on:click='Show1'> </button> ...

  2. vue学习笔记(二)vue的生命周期和钩子函数

    前言 通过上一章的学习,我们已经初步的了解了vue到底是什么东西,可以干什么,而这一篇博客主要介绍vue的生命周期和它常用的钩子函数,如果有学过java的园友可能有接触到在学习servlet的时候学过 ...

  3. vue学习笔记:vue的认识与特点与获取

    Vue了解 Vue:读作 view Vue是一个渐进式框架 与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计. Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整 ...

  4. Vue学习笔记之Vue指令系统介绍

    所谓指令系统,大家可以联想咱们的cmd命令行工具,只要我输入一条正确的指令,系统就开始干活了. 在vue中,指令系统,设置一些命令之后,来操作我们的数据属性,并展示到我们的DOM上. OK,接下来我们 ...

  5. vue学习笔记—bootstrap+vue用户管理

    vue,读音view,简单易用的前端框架.特点如下: 1.一个mvvm的前端框架,内部做好了html中dom对象和后台用js语言定义的变量的双向绑定 2.中国人尤雨溪维护的个人项目,中文资料多,和go ...

  6. VUE学习笔记之vue cli 构建项目

    一.环境搭建: 1.安装node.js 从node.js官网下载并安装node,安装过程很简单,一路"下一步"就可以了.安装完成之后,打开命令行工具(win+r,然后输入cmd), ...

  7. Vue学习笔记之Vue知识点补充

    0x00 修饰符 .lazy 在默认情况下,v-model 在每次 input 事件触发后将输入框的值与数据进行同步 .你可以添加 lazy 修饰符,从而转变为使用 change 事件进行同步: &l ...

  8. Vue学习笔记之Vue学习前的准备工作

    0x00 起步 1.扎实的HTML/CSS/Javascript基本功,这是前置条件. 2.不要用任何的构建项目工具,只用最简单的<script>,把教程里的例子模仿一遍,理解用法.不推荐 ...

  9. Vue学习笔记之Vue组件

    0x00 前言 vue的核心基础就是组件的使用,玩好了组件才能将前面学的基础更好的运用起来.组件的使用更使我们的项目解耦合.更加符合vue的设计思想MVVM. 那接下来就跟我看一下如何在一个Vue实例 ...

  10. Vue学习笔记之Vue的使用

    0x00 安装 对于新手来说,强烈建议大家使用<script>引入 0x01 引入vue.js文件 我们能发现,引入vue.js文件之后,Vue被注册为一个全局的变量,它是一个构造函数. ...

随机推荐

  1. &与&&、|与||的区别

    &和&& 相同之处: &和&&都表示:符号两端必须同时为真,最后的结果才为真:其中一端为假,则最后的结果为假 不同之处: &:左端为假,还需要继 ...

  2. js浮点解决

    function add(a, b) { var c, d, e; try { c = a.toString().split(".")[1].length; } catch (f) ...

  3. SSD接口详解,再也不会买错固态硬盘了

    http://stor.51cto.com/art/201808/582349.htm 硬盘知识科普中,我们提到了SSD的发展史虽短,但是种类和协议比HDD不知道多到哪里去了.因此,本期小编就通过接口 ...

  4. 小程序推送消息(Template)

    最近搞小程序模拟推送消息,才发现小程序推送消息接口准备下线. 请注意,小程序模板消息接口将于2020年1月10日下线,开发者可使用订阅消息功能 咱们现在有需求,所以不管下不下,完成再说. 一:”获取a ...

  5. Xcode 编辑器之关于Other Linker Flags相关问题

    一,概述 问题场景一 当从网上去下载一些之前的完整的项目的时候,用终端也 pod update了,但一运行,熟悉的linker错误就出来了. 解决办法 在Other Linker Flags(也即 O ...

  6. OC学习篇之---数组对象的引用计数问题和自动释放池的概念

    之前一片文章中我们介绍了OC中的两个关键字@property和@synthesize的使用的使用: http://blog.csdn.net/jiangwei0910410003/article/de ...

  7. delphi xe 正则表达式

    Delphi XE 中自带了正则表达式的处理类TRegEx,包含在单元 RegularExpressions,使用时要uses 一下.      TRegEx 是一个结构 ,使用时不用释放.他内部还是 ...

  8. LUOGU P4587 [FJOI2016]神秘数(主席树)

    传送门 解题思路 如果区间内没有\(1\),那么答案就为\(1\),从这一点继续归纳.如果区间内有\(x\)个\(1\),设区间内\([2,x+1]\)的和为\(sum\),如果\(sum=0\),那 ...

  9. ASP.NET MVC 分页之HtmlHelper

    using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptograph ...

  10. 基于Vue2、WebSocket的仿腾讯QQ

    概述 本项目基于Vue2进行高仿手机QQ的webapp,UI上使用的是museUI,使用springMVC搭建的后台.聊天方面,使用WebSocket实现浏览器与服务器全双工通信,允许服务器主动发送信 ...