Maison > interface Web > js tutoriel > le corps du texte

Résumé détaillé des modificateurs de vue (avec exemples)

不言
Libérer: 2018-10-24 16:50:13
avant
2476 Les gens l'ont consulté

Cet article vous apporte un résumé détaillé des modificateurs de vue (avec des exemples). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

Afin de faciliter l'écriture de code pour tout le monde, vue.js vous propose de nombreux modificateurs pratiques, tels que l'annulation du bouillonnement, le blocage des événements par défaut, etc. que nous utilisons souvent ~

Catalogue

Modificateur de formulaire

Modificateur d'événement

Modificateur de bouton de souris

Modificateur de valeur de clé

v- bind modificateur (je ne sais vraiment pas comment ça s'appelle)

Modificateur de formulaire

Quel est le plus couramment utilisé pour remplir des formulaires ? saisir! v-model~ Et nos modificateurs existent pour simplifier ces choses

.lazy

<div>
   <input>
   <p>{{value}}</p>
</div>
Copier après la connexion
Copier après la connexion

Résumé détaillé des modificateurs de vue (avec exemples)

De là, nous pouvons voir que pendant que nous sommes encore en train de taper, alors que le curseur est toujours là, la valeur suivante est déjà sortie, ce qui peut être considéré comme étant en temps très réel.
Mais parfois, nous souhaitons mettre à jour la vue après le départ du curseur après avoir fini de tout saisir.

<div>
   <input>
   <p>{{value}}</p>
</div>
Copier après la connexion
Copier après la connexion

C'est tout ~ Ce n'est que lorsque notre curseur quitte la zone de saisie qu'il mettra à jour la vue, ce qui équivaut à déclencher une mise à jour dans l'événement onchange.

.trim

Dans notre zone de saisie, nous avons souvent besoin de filtrer le contenu saisi par certains frères qui ont accidentellement touché l'espace après avoir saisi le mot de passe.

<input>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Résumé détaillé des modificateurs de vue (avec exemples)

Afin de vous permettre d'y voir plus clairement, j'ai changé le style, mais le problème n'est pas grand, je crois que vous pouvez voyez-le clairement Il n'y a pas d'espaces à gauche et à droite de ce grand bonjour, même si vous avez écrasé la barre d'espace dans la zone de saisie.
Il est à noter qu'il ne peut filtrer que les espaces de début et de fin  ! Le premier et le dernier, ceux du milieu ne seront pas filtrés

.numéro

Comme vous pouvez le voir d'après le nom, cela devrait être pour limiter la saisie de nombres ou la conversion des entrées en nombres, mais ce n'est pas le cas. C'est tellement chaud de précipiter la commande.

Résumé détaillé des modificateurs de vue (avec exemples)

Résumé détaillé des modificateurs de vue (avec exemples)

Si vous entrez le numéro en premier, cela vous limitera ne peut saisir que des chiffres.
Si vous saisissez la chaîne en premier, cela équivaut à ne pas ajouter le modificateur d'événement .number

.stop

en raison du event Avec le mécanisme de bouillonnement, lorsque nous lions un événement click à un élément, l'événement click du parent sera également déclenché.

<div>
  <button>ok</button>
</div>

//js
shout(e){
  console.log(e)
}
//1
//2
Copier après la connexion

Arrêtez le bouillonnement d'un événement en un seul clic, ce qui est extrêmement pratique. Cela équivaut à appeler la méthode event.stopPropagation().

<div>
  <button>ok</button>
</div>
//只输出1
Copier après la connexion

.prevent

Le comportement par défaut pour empêcher un événement, par exemple, empêcher la soumission d'un formulaire lorsque l'on clique sur le bouton de soumission. Équivalent à l’appel de la méthode event.preventDefault().

<!-- 提交事件不再重载页面 -->
Copier après la connexion

Remarque : plusieurs modificateurs peuvent être utilisés en même temps, mais l'ordre peut varier.
L'utilisation de v-on:click.prevent.self empêchera tous les clics, tandis que v-on:click.self.prevent empêchera uniquement les clics sur l'élément lui-même.
C'est-à-dire que est jugé de gauche à droite~

.self

Uniquement lorsque l'événement est déclenché à partir de l'élément lui-même pour auquel l'événement est lié. Le rappel est déclenché. Comme indiqué ci-dessous, nous savions simplement grâce à .stop que l'élément enfant remonterait jusqu'à l'élément parent et déclencherait l'événement click de l'élément parent. Lorsque nous ajoutons ce .self, lorsque nous cliquons sur le bouton, l'événement click crie du. L'élément parent ne sera pas déclenché. Ce n'est que lorsque l'on clique sur l'élément parent (fond bleu) qu'il criera ~ D'après la traduction anglaise de self, c'est « self, yourself » Vous pouvez voir l'utilisation de ce modificateur

<div>
  <button>ok</button>
</div>
Copier après la connexion
.

Résumé détaillé des modificateurs de vue (avec exemples)

.once

L'utilisation de ce modificateur est aussi simple et grossière que son nom. utilisé une fois. Après avoir lié l'événement, il ne peut être utilisé que s'il se déclenche une fois, il ne se déclenchera pas une deuxième fois.

//键盘按坏都只能shout一次
<button>ok</button>
Copier après la connexion

.capture

De ce qui précède, nous connaissons le bouillonnement des événements. En fait, le mécanisme complet des événements est : phase de capture - phase cible -. stade bouillonnant.
Par défaut, le déclencheur d'événement démarre à partir de la cible et bouillonne.
Lorsque nous ajoutons ce .capture, nous faisons le contraire, et l'événement se déclenche depuis le niveau supérieur contenant cet élément vers le bas.

   <div>
      obj1
      <div>
        obj2
        <div>
          obj3
          <div>
            obj4
          </div>
        </div>
      </div>
    </div>
    // 1 2 4 3
Copier après la connexion

从上面这个例子我们点击obj4的时候,就可以清楚地看出区别,obj1,obj2在捕获阶段就触发了事件,因此是先1后2,后面的obj3,obj4是默认的冒泡阶段触发,因此是先4然后冒泡到3~

.passive

当我们在监听元素滚动事件的时候,会一直触发onscroll事件,在pc端是没啥问题的,但是在移动端,会让我们的网页变卡,因此我们使用这个修饰符的时候,相当于给onscroll事件整了一个.lazy修饰符

<!-- 滚动事件的默认行为 (即滚动行为) 将会立即触发 -->
<!-- 而不会等待 `onScroll` 完成  -->
<!-- 这其中包含 `event.preventDefault()` 的情况 -->
<div>...</div>
Copier après la connexion

.native

我们经常会写很多的小组件,有些小组件可能会绑定一些事件,但是,像下面这样绑定事件是不会触发的

<my-component></my-component>
Copier après la connexion

必须使用.native来修饰这个click事件(即<my-component></my-component>),可以理解为该修饰符的作用就是把一个vue组件转化为一个普通的HTML标签,
注意:使用.native修饰符来操作普通HTML标签是会令事件失效的

鼠标按钮修饰符

刚刚我们讲到这个click事件,我们一般是会用左键触发,有时候我们需要更改右键菜单啥的,就需要用到右键点击或者中间键点击,这个时候就要用到鼠标按钮修饰符

.left   左键点击

.right  右键点击

.middle 中键点击

<button>ok</button>
Copier après la connexion
Copier après la connexion

键值修饰符

其实这个也算是事件修饰符的一种,因为它都是用来修饰键盘事件的。
比如onkeyup,onkeydown啊

.keyCode

如果不用keyCode修饰符,那我们每次按下键盘都会触发shout,当我们想指定按下某一个键才触发这个shout的时候,这个修饰符就有用了,具体键码查看键码对应表

<input>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

为了方便我们使用,vue给一些常用的键提供了别名

//普通键
.enter 
.tab
.delete //(捕获“删除”和“退格”键)
.space
.esc
.up
.down
.left
.right
Copier après la connexion
//系统修饰键
.ctrl
.alt
.meta
.shift
Copier après la connexion

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

// 可以使用 `v-on:keyup.f1`
Vue.config.keyCodes.f1 = 112
Copier après la connexion

我们从上面看到,键分成了普通常用的键和系统修饰键,区别是什么呢?
当我们写如下代码的时候,我们会发现如果仅仅使用系统修饰键是无法触发keyup事件的。

<input>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

那该如何呢?我们需要将系统修饰键和其他键码链接起来使用,比如

<input>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

这样当我们同时按下ctrl+c时,就会触发keyup事件。
另,如果是鼠标事件,那就可以单独使用系统修饰符。

      <button>ok</button>
      <button>ok</button>
      <button>ok</button>
Copier après la connexion

大概是什么意思呢,就是你不能单手指使用系统修饰键的修饰符(最少两个手指,可以多个)。你可以一个手指按住系统修饰键一个手指按住另外一个键来实现键盘事件。也可以用一个手指按住系统修饰键,另一只手按住鼠标来实现鼠标事件。

.exact (2.5新增)

我们上面说了这个系统修饰键,当我们像这样绑定了click键按下的事件,惊奇的是,我们同时按下几个系统修饰键,比如ctrl shift点击,也能触发,可能有些场景我们只需要或者只能按一个系统修饰键来触发(像制作一些快捷键的时候),而当我们按下ctrl和其他键的时候则无法触发。那就这样写。
注意:这个只是限制系统修饰键的,像下面这样书写以后你还是可以按下ctrl + c,ctrl+v或者ctrl+普通键 来触发,但是不能按下ctrl + shift +普通键来触发。

<button>ok</button>
Copier après la connexion
Copier après la connexion

然后下面这个你可以同时按下enter+普通键来触发,但是不能按下系统修饰键+enter来触发。相信你已经能听懂了8~

<input>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

v-bind修饰符

.sync(2.3.0+ 新增)

在有些情况下,我们可能需要对一个 prop 进行“双向绑定”。不幸的是,真正的双向绑定会带来维护上的问题,因为子组件可以修改父组件,且在父组件和子组件都没有明显的改动来源。我们通常的做法是

//父亲组件
<comp></comp>
//js
func(e){
 this.bar = e;
}
Copier après la connexion
//子组件js
func2(){
  this.$emit('update:myMessage',params);
}
Copier après la connexion

现在这个.sync修饰符就是简化了上面的步骤

//父组件
<comp></comp> 
//子组件
this.$emit('update:myMessage',params);
Copier après la connexion

这样确实会方便很多,但是也有很多需要注意的点

  1. 使用sync的时候,子组件传递的事件名必须为update:value,其中value必须与子组件中props中声明的名称完全一致(如上例中的myMessage,不能使用my-message)

  2. 注意带有 .sync 修饰符的 v-bind 不能和表达式一起使用 (例如 v-bind:title.sync=”doc.title + ‘!’” 是无效的)。取而代之的是,你只能提供你想要绑定的属性名,类似 v-model。

  3. 将 v-bind.sync 用在一个字面量的对象上,例如 v-bind.sync=”{ title: doc.title }”,是无法正常工作的,因为在解析一个像这样的复杂表达式的时候,有很多边缘情况需要考虑。

.prop

要学习这个修饰符,我们首先要搞懂两个东西的区别。

Property:节点对象在内存中存储的属性,可以访问和设置。
Attribute:节点对象的其中一个属性( property ),值是一个对象。
可以通过点访问法 document.getElementById('xx').attributes 或者 document.getElementById('xx').getAttributes('xx') 读取,通过 document.getElementById('xx').setAttribute('xx',value) 新增和修改。
在标签里定义的所有属性包括 HTML 属性和自定义属性都会在 attributes 对象里以键值对的方式存在。
Copier après la connexion

其实attribute和property两个单词,翻译出来都是属性,但是《javascript高级程序设计》将它们翻译为特性和属性,以示区分

//这里的id,value,style都属于property
//index属于attribute
//id、title等既是属性,也是特性。修改属性,其对应的特性会发生改变;修改特性,属性也会改变
<input>
//input.index === undefined
//input.attributes.index === this.index
Copier après la connexion

从上面我们可以看到如果直接使用v-bind绑定,则默认会绑定到dom节点的attribute。
为了

通过自定义属性存储变量,避免暴露数据

防止污染 HTML 结构

我们可以使用这个修饰符,如下

<input>
//input.index === this.index
//input.attributes.index === undefined
Copier après la connexion

.camel

由于HTML 特性是不区分大小写的。

<svg></svg>
Copier après la connexion
Copier après la connexion

实际上会渲染为

<svg></svg>
Copier après la connexion
Copier après la connexion

这将导致渲染失败,因为 SVG 标签只认 viewBox,却不知道 viewbox 是什么。
如果我们使用.camel修饰符,那它就会被渲染为驼峰名。
另,如果你使用字符串模版,则没有这些限制。

new Vue({
  template: '<svg></svg>'
})
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!