红色是比较重要的修饰符
一定要搞懂的
stop
阻止冒泡事件
prevent
阻止默认动作,比如说@click.prevent
,这样点了和没电一样的
keypress
@click.keypress.13=xxx
这样的话就相当于当按了keypress上代号为13的键时执行一个函数,但是要知道的是这些太难记,所以我们通常会使用alias,也就是别名,vue支持的别名有
- .enter
- .tab
- .delete (捕获“删除”和“退格”键)
- .esc
- .space
- .up
- .down
- .left
- .right
只要使用这些键都可以使用别名
sync(重要)
sync是一个非常有用的非常重点要记住的修饰符
有时候我们会需要prop来调用外部数据,但是我们是不可以直接修改外部数据的,需要发布需求出去,让外部数据接收并且自己修改。这样才更加有序
比如在开发可复用的组件库时。我们需要做的只是让子组件改变父组件状态的代码更容易被区分。从 2.3.0 起我们重新引入了 .sync 修饰符,但是这次它只是作为一个编译时的语法糖存在。它会被扩展为一个自动更新父组件属性的 v-on 监听器。
我们推荐以update:myPropName 的模式触发事件取而代之。举个例子,我们可以用以下方法表达对其赋新值的意图:
<button @click="$emit('update:money', 10)">
第一个是emit发布的事件,名字叫做update:money,需要特别注意的是,发布的事件通常为
update:xxx
,这是vue作者规定的。
然后父组件可以监听那个事件并根据需要更新一个本地的数据属性。例如:
<Child :money v-on:"update:money"="total=$event"/>
也就是说,我们通过event里面
然后父组件通过v-on订阅了这个事件'update:money',并且可以得到这个10,然后选择更新自己的数据
但是这个比较常用,所以vue作者就把父组件接收的给简化了为sync修饰符,使其可以比较方便
<Child :money.sync="total"/>//简化前<Child :money v-on:"update:money"="total=$event"/>
这个是个非常实用的功能
注意
注意带有 .sync 修饰符的 v-bind 不能和表达式一起使用 (例如 v-bind:title.sync=”doc.title + ‘!’”
是无效的)。取而代之的是,你只能提供你想要绑定的属性名,类似 v-model。
当我们用一个对象同时设置多个 prop 的时候,也可以将这个 .sync 修饰符和 v-bind 配合使用:
<text-document v-bind.sync="doc"></text-document>
这样会把 doc 对象中的每一个属性 (如 title) 都作为一个独立的 prop 传进去,然后各自添加用于更新的 v-on 监听器。
将 v-bind.sync 用在一个字面量的对象上,例如 v-bind.sync=”{ title: doc.title }”
,是无法正常工作的,因为在解析一个像这样的复杂表达式的时候,有很多边缘情况需要考虑。