Vue中的修饰符使用

268 阅读2分钟
1、.stop修饰符
  • 由于事件冒泡的机制,我们给元素绑定点击事件的时候,也会触发父级的点击事件。.stop修饰用来符阻止事件冒泡,相当于调用了event.stopPropagation()方法
2、.prevent修饰符
  • .prevent修饰符用于阻止事件的默认行为,例如,当点击提交按钮时阻止对表单的提交。相当于调用了event.preventDefault()方法。
3、.once修饰符
  • .once修饰符的用法是只触发一次回调,绑定了事件以后只能触发一次,第二次就不会触发。
4、.keyCode修饰符
  • .keyCode修饰符,当特定按键触发时才触发回调。
<input type="text" @keyup.enter="add()"> //当enter键释放是触发函数
5、 .sync修饰符
  • 在有些情况下,我们可能需要对一个prop进行“双向绑定”。不幸的是,真正的双向绑定会带来维护上的问题,因为子组件可以修改父组件,且在父组件和子组件都没有明显的改动来源,通常我们的做法是
//父亲组件
<comp :myMessage="bar" @update:myMessage="fn"></comp>
//js
fn(e){
 this.bar = e;
}

//子组件js
fn2(){
  this.$emit('update:myMessage',params);
}

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

//父组件
<comp :myMessage.sync="bar"></comp> 
//子组件
this.$emit('update:myMessage',params);

注意:

  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 }”,是无法正常工作的,因为在解析一个像这样的复杂表达式的时候,有很多边缘情况需要考虑。

部分引用于:vue修饰符