美文网首页
vue.js易忘的点

vue.js易忘的点

作者: 杨戬Yj | 来源:发表于2020-12-23 16:41 被阅读0次
监听事件

可以用 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码。
eg

<div id="example-1">
  <button v-on:click="counter += 1">Add 1</button>
  <p>The button above has been clicked {{ counter }} times.</p>
</div>
var example1 = new Vue({
  el: '#example-1',
  data: {
    counter: 0
  }
})
vue里的原生DOM事件
<div id="example-2">
  <!-- `greet` 是在下面定义的方法名 -->
  <button v-on:click="greet">Greet</button>
</div>
var example2 = new Vue({
  el: '#example-2',
  data: {
    name: 'Vue.js'
  },
  // 在 `methods` 对象中定义方法
  methods: {
    greet: function (event) {
      // `this` 在方法里指向当前 Vue 实例
      alert('Hello ' + this.name + '!')
      // `event` 是原生 DOM 事件
      if (event) {
        alert(event.target.tagName)
      }
    }
  }
})

有时也需要在内联语句处理器中访问原始的 DOM 事件。可以用特殊变量 $event 把它传入方法

<button v-on:click="warn('Form cannot be submitted yet.', $event)">
  Submit
</button>
methods: {
  warn: function (message, event) {
    // 现在我们可以访问原生事件对象
    if (event) {
      event.preventDefault()
    }
    alert(message)
  }
}
事件修饰符
  • 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>

使用修饰符时,顺序很重要;相应的代码会以同样的顺序产生。因此,用
v-on:click.prevent.self 会阻止所有的点击,而 v-on:click.self.prevent只会阻止对元素自身的点击。

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

Vue 还对应 addEventListener 中的 passive 选项提供了 .passive 修饰符。

<!-- 滚动事件的默认行为 (即滚动行为) 将会立即触发 -->
<!-- 而不会等待 `onScroll` 完成  -->
<!-- 这其中包含 `event.preventDefault()` 的情况 -->
<div v-on:scroll.passive="onScroll">...</div>

这个 .passive 修饰符尤其能够提升移动端的性能。

不要把 .passive 和 .prevent 一起使用,因为 .prevent 将会被忽略,同时浏览器可能会向你展示一个警告。请记住,.passive 会告诉浏览器你不想阻止事件的默认行为。

按键修饰符

在监听键盘事件时,我们经常需要检查详细的按键。Vue 允许为 v-on 在监听键盘事件时添加按键修饰符:

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

你可以直接将 KeyboardEvent.key暴露的任意有效按键名转换为 kebab-case 来作为修饰符。

<input v-on:keyup.page-down="onPageDown">

在上述示例中,处理函数只会在 $event.key 等于 PageDown 时被调用。

按键码

keyCode 的事件用法已经被废弃了并可能不会被最新的浏览器支持。

使用 keyCode attribute 也是允许的:

<input v-on:keyup.13="submit">

为了在必要的情况下支持旧浏览器,Vue 提供了绝大多数常用的按键码的别名:

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

有一些按键 (.esc 以及所有的方向键) 在 IE9 中有不同的 key 值, 如果你想支持 IE9,这些内置的别名应该是首选。

还可以通过全局 config.keyCodes 对象自定义按键修饰符别名

// 可以使用 `v-on:keyup.f1`
Vue.config.keyCodes.f1 = 112
系统修饰键

可以用如下修饰符来实现仅在按下相应按键时才触发鼠标或键盘事件的监听器。

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

注意:在 Mac 系统键盘上,meta 对应 command 键 (⌘)。在 Windows 系统键盘 meta 对应 Windows 徽标键 (⊞)。在 Sun 操作系统键盘上,meta 对应实心宝石键 (◆)。在其他特定键盘上,尤其在 MIT 和 Lisp 机器的键盘、以及其后继产品,比如 Knight 键盘、space-cadet 键盘,meta 被标记为“META”。在 Symbolics 键盘上,meta 被标记为“META”或者“Meta”。

eg:

<!-- Alt + C -->
<input v-on:keyup.alt.67="clear">

<!-- Ctrl + Click -->
<div v-on:click.ctrl="doSomething">Do something</div>

请注意修饰键与常规按键不同,在和 keyup 事件一起用时,事件触发时修饰键必须处于按下状态。换句话说,只有在按住 ctrl 的情况下释放其它按键,才能触发 keyup.ctrl。而单单释放 ctrl 也不会触发事件。如果你想要这样的行为,请为 ctrl 换用 keyCode:keyup.17。

鼠标按钮修饰符
  • .left
  • .right
  • .middle
    这些修饰符会限制处理函数仅响应特定的鼠标按钮。

相关文章

  • CSS 易忘点

    样式优先级 就近原则:内联样式表(标签内部)> 嵌入样式表(当前文件中)> 外部样式表(外部文件中)。 比较权值:...

  • iOS开发之 - 小冷易忘知识点总结

    看网上有人整理 iOS 开发中常用的易忘知识点,iOS 开发小冷易忘知识点总结,觉得不错,于是自己也想着整理一些易...

  • 易忘知识点

    有些知识点,因为用的不多且比较小,所以很容易忘记,但是有的时候又会用到所以多次去翻,这边将一些这种易忘的小知识点作...

  • vue项目易忘点

    项目搭建方面: 1.新建码云仓库,再搭建vue项目,reset,border,配置好首页路由2.安装sass:np...

  • 使用思维导图总结Vue.js官方文档(例子优化、难点及易错点注释

    上篇文章 使用思维导图总结Vue.js官方文档(例子优化、难点及易错点注释)【上】 完成了Vue.js官网基础部...

  • 夫天运

    …… “故曰:以敬孝易,以爱孝难;以爱孝易,而忘亲难;忘亲易,使亲忘我难;使亲忘我易,兼忘天下难;兼忘天下易...

  • iOS开发之 - 键盘处理神器 IQKeyboardManage

    年后上班第一天,比较闲,上午的时候抽空整理了iOS开发中常用的易忘知识点:iOS开发之 - 小冷易忘知识点总结,有...

  • mysql易忘知识点

    1.数据类型转换:cast(字段名 as 转换的类型)

  • 关于忘记和记起

    年龄大了,易忘; 事情多了,易忘; 百分百投入一件事的时间,另一件事易忘。 紧急的事情出现,重要和长期的事情易忘。...

  • OC基础易忘知识点

    ];p->_size = 3.5;p->_color = 0;p->_model = 4;p->_cpu = 1;...

网友评论

      本文标题:vue.js易忘的点

      本文链接:https://www.haomeiwen.com/subject/rdzpnktx.html