Vue 指令及修饰符 & .sync 详解

简介: Vue 指令及修饰符 & .sync 详解

1、指令及其语法

Vue 模板语法中的 v-text、v-html、v-pre 都是指令,它起到一种命令或指示的效果,语法 如下:


v-指令名:参数 = 值    如: v-on:click="add",如果值里没有特殊字符,则可以不加引号。


补充:有些指令没有参数和值,如 v-pre ,有些指令没有值,如 v-on:click.prevent 。

2、指令的修饰符

指令的语法是:v-指令名:参数 = 值 。有时候你会看到指令后面会加 .修饰符 字样,有的指令支持修饰符,它们的功能各种各样,但其主要是起到修饰指令的功能。

1.<div @click.stop="add"> 添加 </div>    <!-- 表示阻止事件传播/冒泡 -->
<a @click.prevent="add"> 添加 </a>     <!-- 表示阻止默认动作 -->
<div @click.stop.prevent="add"> 添加 </div> <!-- 同时表示两种意思 -->

3、都有哪些指令修饰符

  • v-on 支持的有:.{keycode|keyAlias}  .stop  .prevent  .capture  .self  .once  .passive .native
<input @keypress.13="fun"/>  <!-- func函数可接收event参数-->  <input @keypress.enter="fun"/>
  • 快捷键相关:.ctrl  .alt  .shift  .meta  .exact
  • 鼠标相关:.left  .right  .middle
  • v-bind 支持的有:.prop  .camel .sync    
  • v-model 支持的有:.lazy  .number  .trim


以上修饰符的完整讲解,可参考 Vue 官方文档,上述黑色字体的修饰符的可以仅作为了解。

4、深入理解 .sync 指令修饰符

在说 vue 的 .sync 指令修饰符前,我们先看下官方文档:vue.sync 修饰符,里面说 vue.sync 修饰符以前存在于 vue1.0 版本里,后在 2.0 中被移除了。但是在 2.0 发布之后的实际应用中,我们发现 .sync 还是有其适用之处,比如在开发可复用的组件库时。我们需要做的只是让子组件改变父组件状态的代码更容易被区分。从 2.3.0 起 Vue 重新引入了 sync 修饰符,但是这次它只是作为一个编译时的 语法糖 存在。它会被扩展为一个自动更新父组件属性的v-on 监听器,以更方便父子组件间的双向绑定。


.sync 指令修饰符主要在父子组件传值是时候使用,子组件通过 props 属性接收父组件传递过来的值,但是子组件并不能直接对 props 属性做修改,而是需要触发一个事件,让父组件进行修改。之所以需要这样,理论上的原因是,该 props 属性即存在父组件又存在子组件中,如果子组件擅自修改 props 中的属性,父组件并不能监听到该数据的修改,从而会出现一些问题。示例代码如下:

<div id="app">
    <div>{{bar}}</div>
    <my-comp :foo.sync="bar"></my-comp>
    <!-- <my-comp :foo="bar" @update:foo="val => bar = val"></my-comp> -->
</div>
<script>
    Vue.component('my-comp', {
        template: '<div @click="increment">点我+1</div>',
        data: function() {
            return {copyFoo: this.foo}
        },
        props: ['foo'],
        methods: {
            increment: function() {
                this.$emit('update:foo', ++this.copyFoo);    //通过$emit向父组件传值
            }
        }
    });
    new Vue({
        el: '#app',
        data: {bar: 0}
    });
</script>
<my-comp :foo.sync="bar"></my-comp>    <!-- 会被扩展成:-->
<comp :foo="bar" @update:foo="val => bar = val"></comp>    <!-- .sync就是一个语法糖 -->
目录
相关文章
|
25天前
|
JavaScript API 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
27天前
|
JavaScript 前端开发 开发者
vue 数据驱动视图
总之,Vue 数据驱动视图是一种先进的理念和技术,它为前端开发带来了巨大的便利和优势。通过理解和应用这一特性,开发者能够构建出更加动态、高效、用户体验良好的前端应用。在不断发展的前端领域中,数据驱动视图将继续发挥重要作用,推动着应用界面的不断创新和进化。
|
1天前
|
JavaScript 关系型数据库 MySQL
基于VUE的校园二手交易平台系统设计与实现毕业设计论文模板
基于Vue的校园二手交易平台是一款专为校园用户设计的在线交易系统,提供简洁高效、安全可靠的二手商品买卖环境。平台利用Vue框架的响应式数据绑定和组件化特性,实现用户友好的界面,方便商品浏览、发布与管理。该系统采用Node.js、MySQL及B/S架构,确保稳定性和多功能模块设计,涵盖管理员和用户功能模块,促进物品循环使用,降低开销,提升环保意识,助力绿色校园文化建设。
|
25天前
|
JavaScript 前端开发 开发者
Vue是如何劫持响应式对象的
Vue是如何劫持响应式对象的
23 1
|
25天前
|
JavaScript 前端开发 API
介绍一下Vue中的响应式原理
介绍一下Vue中的响应式原理
27 1
|
25天前
|
JavaScript 前端开发 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
25天前
|
存储 JavaScript 前端开发
介绍一下Vue的核心功能
介绍一下Vue的核心功能
|
JavaScript 测试技术 容器
Vue2+VueRouter2+webpack 构建项目
1). 安装Node环境和npm包管理工具 检测版本 node -v npm -v 图1.png 2). 安装vue-cli(vue脚手架) npm install -g vue-cli --registry=https://registry.
1059 0
|
29天前
|
JavaScript 前端开发 开发者
vue学习第一章
欢迎来到我的博客!我是瑞雨溪,一名热爱前端的大一学生,专注于JavaScript与Vue,正向全栈进发。博客分享Vue学习心得、命令式与声明式编程对比、列表展示及计数器案例等。关注我,持续更新中!🎉🎉🎉
32 1
vue学习第一章
|
29天前
|
JavaScript 前端开发 索引
vue学习第三章
欢迎来到瑞雨溪的博客,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中的v-bind指令,包括基本使用、动态绑定class及style等,希望能为你的前端学习之路提供帮助。持续关注,更多精彩内容即将呈现!🎉🎉🎉
26 1
vue学习第三章
下一篇
DataWorks