Vue学习笔记——常见简写修饰符

news/2024/7/10 1:56:19 标签: vue, javascript

最近在看vue-element-admin框架的源码,发现其中还是有不少的语法糖。感觉对初次接触Vue的开发者还是会造成些困惑,虽然之前我有使用过React,但是对比起来Vue还是有不少从未见过的语法糖或简写,为了以便时而查阅,这里就将自己觉得比较重要的内容罗列在此。

常见简写

v-bind属性绑定:

<div v-bind:class="actived"></div>
//等效于
<div :class="actived"></div>

v-on事件绑定@

<div v-on:click="actived"></div>
//等效于
<div @click="actived"></div>

事件修饰符

  • .stop
  • .prevent
  • .capture
  • .self
  • .once
  • .passive
<!-- 阻止单击事件继续向父组件传播 -->
<a v-on:click.stop="doThis"></a>

<!-- 提交事件不再重载页面 -->
<form v-on:submit.prevent="onSubmit"></form>

<!-- 同时使用多个修饰符,分先后 -->
<a v-on:click.stop.prevent="doThat"></a>

<!-- 只有修饰符 -->
<form v-on:submit.prevent></form>

<!-- 添加事件监听器时使用事件捕获模式 -->
<!-- 即内部元素触发的事件先在此处理,然后才交由内部元素进行处理 -->
<div v-on:click.capture="doThis">...</div>

<!-- 只当在 event.target 是当前元素自身时触发处理函数 -->
<!-- 即事件不是从内部元素触发的 -->
<div v-on:click.self="doThat">...</div>

<!-- 点击事件将只会触发一次 -->
<a v-on:click.once="doThis"></a>

<!-- 滚动事件的默认行为 (即滚动行为) 将会立即触发,而不会等待onScroll完成 -->
<div v-on:scroll.passive="onScroll"></div>

按键修饰符

允许组件监听具体的按键事件,例如:

<!-- 只有在 key是 Enter 时调用 submit()方法 -->
<input v-on:keyup.enter="submit">

常用按键修饰符

  • .enter
  • .tab
  • .delete (捕获“删除”和“退格”键)
  • .esc
  • .space
  • .up
  • .down
  • .left
  • .right

系统按键修饰符

  • .ctrl
  • .alt
  • .shift
  • .meta

Mac 系统键盘上,meta 对应 command(⌘)。在Windows 系统键盘 meta 对应 Windows徽标键 (⊞)

鼠标按键修饰符

  • .left
  • .right
  • .middle

这些可以用于监听特定的鼠标点击按键,例如click到底是左键还是右键触发等等。

自定义

自定义事件

注意事件名称必须是转小写之后完全匹配的,例如:

<my-component @my-event="doSomething"></my-component>
//可以使用如下语句触发my-event事件
this.$emit('my-Event')
//但是使用如下语句是不能触发的,因为事件是不会转化命名格式的
this.$emit('myEvent')
//建议始终使用 kebab-case格式 的事件名

自定义命令

在开始自定义命令之前,我们还是先来看看Vue官方为我们提供了哪些命令:

  • v-if:条件渲染命令,只有匹配的那一行标签才会被渲染
<!--  -->
<h1 v-if="awesome">Vue is awesome!</h1>
<h1 v-else-if="good">good</h1>
<h1 v-else>Oh no </h1>
  • v-show:带有 v-show 的元素始终会被渲染并保留在 DOM中。v-show 只是简单地切换元素的display
<h1 v-show="ok">Hello!</h1>
  • v-for:遍历指定列表,并将遍历的子元素传入子组件,注意v-for 的优先级比 v-if 更高
<ul id="example-1">
  <li v-for="item in items" :key="item.message">
    {{ item.message }}
  </li>
</ul>
  • v-bind:is:用于切换当前显示的组件
<!-- 当 `currentView` 改变时,组件也跟着改变 -->
<component v-bind:is="currentView"></component>
  • v-html:将后面跟的值解释为html
<!-- rawhtml="<span style="color: red">This should be red.</span>" -->
<p>Using mustaches: {{ rawHtml }}</p>
<!-- 下面这段代码将会渲染成红色的内容 -->
<p>Using v-html directive: <span v-html="rawHtml"></span></p>

还有些没涉及到的指令请查看官方API,然后我们来看如何自定义我们自己的命令:

// 注册一个v-focus命令
Vue.directive('focus', {
  // 指定一个钩子函数,即什么时候执行这个函数
  inserted: function (el) {
    // 聚焦元素
    el.focus()
  }
})
<input v-focus>

按照上面这么配置之后,当页面加载完毕之后,输入框就会被聚焦。钩子函数有如下几个:

  • bind:只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置。

  • inserted:被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)。

  • update:所在组件的 VNode 更新时调用,但是可能发生在其子 VNode 更新之前。指令的值可能发生了改变,也可能没有。但是你可以通过比较更新前后的值来忽略不必要的模板更新 (详细的钩子函数参数见下)。

  • componentUpdated:指令所在组件的 VNode 及其子 VNode 全部更新后调用。

  • unbind:只调用一次,指令与元素解绑时调用

自定义的命令也是可以传参数的,例如:

<div id="baseexample">
  <p>Scroll down the page</p>
  <p v-pin="200">Stick me 200px from the top of the page</p>
</div>
Vue.directive('pin', {
  bind: function (el, binding, vnode) {
    el.style.position = 'fixed'
    //可以从binding参数中获取到值
    el.style.top = binding.value + 'px'
  }
})

http://www.niftyadmin.cn/n/1180408.html

相关文章

oracle假启动

没错&#xff0c;这个文章你找对地方了&#xff01;慢慢往下看&#xff01;是不是客户机连服务器遇到过这种错误&#xff1f;ORA-12518 TNS:监听程序无法分发客户机连接是不是服务器本机上不写服务名&#xff0c;直接连接也连不上&#xff0c;提示这种错误&#xff1f;ORA-1256…

行大小计算测试

数据库中每一行到底占用多少空间&#xff0c;在这里&#xff0c;做个小测试~~~这里只做了堆表的计算&#xff0c;如果包含索引&#xff0c;按照文档把索引的列也加上就OK啦~ 建个测试表&#xff0c;然后用DBCC PAGE打印出Slot的信息 CREATE TABLE TstA (col1 CHAR(5) NULL,col2…

[iphone]XML 解析 之 TBXML 介绍

总的来说&#xff0c;iphone 上可用的解析XML的方式大概有2种类型的。1.Tree-based API&#xff1a;这种API的处理方式是将XML的结构看成是树&#xff0c;然后把树的各部分看成一个对象来处理&#xff0c;这就是我们说的DOM (Document Object Model)方式。在iPhone的SDK里包含了…

vue-element-admin源码解读——项目启动过程

vue-element-admin源码解读——项目组件布局及状态管理vue-element-admin源码解读——项目启动过程vue-element-admin源码解读——数据Mock vue-element-admin是一款优秀的前端框架&#xff0c;使用了最新的前端技术&#xff0c;内置了(Vue-i18)国际化解决方案&#xff0c;动态…

三大平衡树(Treap + Splay + SBT)总结+模板

Treap树 核心是 利用随机数的二叉排序树的各种操作复杂度平均为O(lgn) Treap模板&#xff1a; #include <cstdio> #include <cstring> #include <ctime> #include <iostream> #include <algorithm> #include <cstdlib> #include <cmath…

View与Control间的数据交互

View与Control间的数据交互 1.ViewBag.Name "Name1" 2.ViewData["VD"] "view data"; 3.TempData["TD"] "temp data"; 4.Model ViewBag和ViewData只在当前的Action中有效&#xff0c;生命周期和 View 相同&#xff1b; Tem…

vue-element-admin源码解读——数据Mock

vue-element-admin源码解读——项目组件布局及状态管理vue-element-admin源码解读——项目启动过程vue-element-admin源码解读——数据Mock MOCK是指模拟服务器按照一定的规则或者设定的数据&#xff0c;对客户端的请求进行响应。换个说法就是可以不用搭建后台服务器&#xff0…

JQuery Easy Ui dataGrid 数据表格

2019独角兽企业重金招聘Python工程师标准>>> 数据表格 - DataGrid 内容 概况 使用方法 数据表格属性 数据列属性 编辑 数据视图 事件 方法 继承$.fn.panel.defaults&#xff0c;使用$.fn.datagrid.defaults重载默认值。. 数据表格显示的数据以表格的形式&#xff0c…