v-on绑定事件监听器

直接撸代码:

  1. <div id="app">
  2. <h2>计数器</h2>
  3. number:{{number}}
  4. <button v-on:click="add">+</button>
  5. <button @click="subtract">-</button>
  6. </div>
  7. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  8. <script type="text/javascript">
  9. var app = new Vue({
  10. el: '#app', // app是Vue实例的挂在对象
  11. data: {
  12. number: 0
  13. },
  14. methods: {
  15. add () {
  16. this.number ++
  17. },
  18. subtract () {
  19. this.number --
  20. }
  21. }
  22. })
  23. </script>

@click等同于v-on:click,是Vue的语法糖,在methods内定义好方法,v-on指令监听DOM事件来触发一些javascript代码。

除了绑定click之外,我们还可以绑定其它事件,比如键盘回车事件v-on:keyup.enter,更多事件请点击查看

面试考点:Vue事件修饰符的作用

  1. <div id="app">
  2. <div @click="grandfather">
  3. <div @click="father">
  4. <div @click="son">me</div>
  5. </div>
  6. </div>
  7. </div>
  8. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  9. <script type="text/javascript">
  10. var app = new Vue({
  11. el: '#app', // app是Vue实例的挂在对象
  12. data: {
  13. },
  14. methods: {
  15. grandfather () {
  16. console.log('grandfather')
  17. },
  18. father () {
  19. console.log('father')
  20. },
  21. son () {
  22. console.log('son')
  23. },
  24. }
  25. })
  26. </script>

事件流图(来自百度):

上面一段代码,什么修饰符都不添加时,点击“me”,依次打印son、father、grandfather

  • .stop

    阻止冒泡,操作子元素不会触发父元素同类事件
  1. <div @click.stop="grandfather">
  2. <div @click.stop="father">
  3. <div @click.stop="son">me</div>
  4. </div>
  5. </div>

此时,只会触发子元素事件

  • .capture

    添加事件侦查时使用事件捕获模式,从外到内依次捕获
  1. <div @click.capture="grandfather">
  2. <div @click.capture="father">
  3. <div @click.capture="son">me</div>
  4. </div>
  5. </div>

依次打印grandfather、father、son

  • .prevent

    取消默认事件
  1. <a href="www.baidu.com" @click.prevent="">百度</a>

链接不跳转

  • .self

    只在添加事件的元素自身触发
  • .once

    事件只触发一次

其他指令

v-pre(不需要表达式)

在模板中跳过vue的编译,直接输出原始值。就是在标签中加入v-pre就不会输出vue中的data值了

  1. <div id="app" v-pre>
  2. <h1>{{message}}</h1>
  3. </div>
  4. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  5. <script type="text/javascript">
  6. var app = new Vue({
  7. el: '#app', // app是Vue实例的挂在对象
  8. data: {
  9. message: 'Hello world'
  10. }
  11. })
  12. </script>

v-cloak(不需要表达式)

为了解决当网速较慢时,Vue.js文件没有被加载完时页面上数据绑定的闪现问题。

例如:

  1. <h1>{{message}}</h1>

会闪现{{message}}

利用v-cloak指令使页面在Vue渲染完指定的整个DOM后才进行显示,并且v-cloak会在Vue实例结束编译后从绑定的DOM上移除,结合CSS可以解决这个问题。

  1. [v-cloak] {
  2. display: none;
  3. }

v-once(不需要表达式)

这个指令在实际开发中用的不是很多,作用是使定义它的元素或组件只渲染一次,包括元素或组件的所有子节点。渲染一次后不会随数据变化,可以视为静态。

  1. <div id="app" v-once>
  2. <input type="text" v-model="message">
  3. <h1>{{message}}</h1>
  4. </div>
  5. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  6. <script type="text/javascript">
  7. var app = new Vue({
  8. el: '#app', // app是Vue实例的挂在对象
  9. data: {
  10. message: "Hello world" // 字面量
  11. }
  12. })
  13. </script>

以上是本期全部内容,欲知后事如何,请听下回分解<( ̄︶ ̄)↗[GO!]

Vue基础之内部指令(下)的更多相关文章

  1. Vue基础之内部指令(上)

    v-if.v-else-if.v-else以及v-show 条件指令v-if.v-else-if.v-else 类似于JavaScript里的if.else-if.else,这三个指令根据表达式的值对 ...

  2. Vue基础语法与指令

    项目初始化 用vscode打开终端,输入npm init -y生成package.json 然后安装vue npm install vue 需要注意的是,我遇到了这个问题 出现原因:文件夹名和生成的p ...

  3. Vue基础知识之指令和生命周期(一)

    优点:轻量易学,灵活. 核心:通过尽可能简单的API来实现响应的数据绑定和组合的视图组件. 1.数据绑定:数据改变,驱动视图的自动更新. 2.视图组件化:把整个网页拆分成一个个区块,每个区块都可以看成 ...

  4. Vue基础(环境配置、内部指令、全局API、选项、内置组件)

    1.环境配置 安装VsCode 安装包管理工具:直接下载 NodeJS 进行安装即可,NodeJS自带 Npm 包管理工具,下载地址:https://nodejs.org/en/download/安装 ...

  5. 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十八║Vue基础: 指令(下)+计算属性+watch

    回顾 今天来晚辣,给公司做了一个小项目,一个瀑布流+动态视频控制的DEMO,有需要的可以联系我,公司的项目就不对外展示了(一个后端程序员真的要干前端了哈哈哈). 书接上文,昨天正式的开始了Vue的代码 ...

  6. Vue 2.0入门基础知识之内部指令

    1.Vue.js介绍 当前前端三大主流框架:Angular.React.Vue.React前段时间由于许可证风波,使得Vue的热度蹭蹭地上升.另外,Vue友好的API文档更是一大特色.Vue.js是一 ...

  7. (day65、66)Vue基础、指令、实例成员、JS函数this补充、冒泡排序

    目录 一.Vue基础 (一)什么是Vue (二)为什么学习Vue (三)如何使用Vue 二.Vue指令 (一)文本指令 (二)事件指令v-on (三)属性指令v-bind (四)表单指令v-model ...

  8. Vue - 内部指令

    1.插值 A:<span>TEXT:{{text}}</span> {{text}}会被相应的数据类型text属性值替换,当text值改变时候,文本中的值也会相应的发生变化 B ...

  9. 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十七 ║Vue基础:使用Vue.js 来画博客首页+指令(一)

    缘起 书说前两篇文章<十五 ║ Vue前篇:JS对象&字面量&this>和 <十六 ║ Vue前篇:ES6初体验 & 模块化编程>,已经通过对js面向对 ...

随机推荐

  1. unity中EventTrigger组件的应用

    using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using D ...

  2. Metasploit模块简述

    辅助模块.渗透攻击模块.后渗透攻击模块.攻击载荷模块.空指令模块.编码器模块 做了一个思维导图,方便理解. 有需要的就下载吧: 链接:https://share.weiyun.com/5e4XVa1 ...

  3. c#基础之异常处理及自定义异常

    一.什么是c#中的异常? 异常是程序运行中发生的错误,异常处理是程序的一部分.c#中的异常类主要是直接或者间接的派生于 System.Exception类 ,也就是说System.Exception类 ...

  4. Python2.0 与 3.0 的区别

    Python 2.0 =默认编码=ASSIC=不支持中文 Python 3.0 =默认编码=UNICODE=默认支持中文   In summary : Python 2.x is legacy, Py ...

  5. DDD 学习记录

    1.领域模型建立    set 最好是受保护 2.CQRS   建议   查询可以直接从数据层获取: 3.领域服务 包含 不合适放在其他实体里面的方法,包含比较多实体操作的方法: 4.实体 里面的方法 ...

  6. JS--------文件操作基本方法:上传/下载

    /** * 上传文件 * @param {any} files 文件 * @param {any} data 数据 * @returns [true,文件路径] * @returns [false,异 ...

  7. jQuery对象和普通DOM对象的区别

    1.DOM对象DOM实际上是以面向对象方式描述的文档模型.DOM定义了表示和修改文档所需的对象.这些对象的行为和属性以及这些对象之间的关系.根据W3C DOM规范,DOM是HTML与XML的应用编程接 ...

  8. php 跨域请求

    执行要在跨域请求的服务器端对应的代码上增加下面的代码 <?php namespace Admin\Controller; // 指定允许跨域访问 header('Access-Control-A ...

  9. Flex-box入门---flex-grow, flex-shrink, flex-basis

    Block Elements and inline elements(块元素和行内元素) 在进入正题之前,我们先来简单总结一下传统的block元素和inline元素. HTML中的block元素显示在 ...

  10. OpenGL之纹理贴图(Texture)

    学习自: https://learnopengl-cn.github.io/01%20Getting%20started/06%20Textures/ 先上一波效果图: 实际上就是:画了一个矩形,然后 ...