插值、指令和缩写
插值 { }
- 文本
数据绑定最常见的形式就是使用 “Mustache” 语法 (两个大括号{ }) 的文本插 - 原始 HTML
两个大括号会将数据解释为普通文本,而不是 HTML 代码。为了输出真正的 HTML 代码,需要使用 v-html 指令
指令
指令 (Directives) 是带有 v- 前缀的特殊属性 (attribute)
- v-on: 添加一个事件监听器,通过它调用在 Vue 实例中定义的方法
- v-bind: 主要用于属性绑定
- v-html: 输出 HTML 代码
- v-model: 能轻松实现表单输入和应用状态之间的双向绑定
缩写
v-bind 可以缩写为 :
1 | <!-- 完整语法 --> |
v-on 可以缩写为 @
1 | <!-- 完整语法 --> |
计算属性、对象 & 数组语法
计算属性
1 | let app = new Vue({ |
相关响应式依赖发生改变时,计算属性会重新求值
只要还没有发生改变,多次访问时,计算属性会立即返回之前的计算结果,而不必再次执行函数
Class 与 Style 的绑定
绑定 Class
给一个元素绑定一个 Class 属性 v-bind:class (以下缩写为 :class)
对象语法
可以给 :class 传一个对象,用来动态的切换 class
1 | <p :class="{top:aaa}">{{msg}}</p> |
1 | let app = new Vue({ |
数组语法
可以给 :class 传一个数组,用来动态的切换 class
1 | <p :class="[aaa,sss]">{{msg}}</p> |
1 | let app = new Vue({ |
数组语法和对象语法可以同时使用
1 | <p :class="[{top:aaa},left]">{{msg}}</p> |
1 | let app = new Vue({ |
绑定 Style
给一个元素绑定一个 Style 属性 v-bind:style (以下缩写为 :style)
对象语法
和 class 一样
可以给 :style 传一个对象,用来动态的切换 style
1 | <p :style="{color:aaa}">{{msg}}</p> |
1 | let app = new Vue({ |
数组语法
和 class 一样
可以给 :style 传一个数组 ,用来动态的切换 style
1 | <p :style="[colorStyle,fontStyle]">{{msg}}</p> |
1 | let app = new Vue({ |
还是和 class 一样
数组语法和对象语法可以同时使用
1 | <p :style="[{color:'red'},fontStyle]">{{msg}}</p> |
1 | let app = new Vue({ |
条件渲染
v-if
v-if 指令用于条件性地渲染一块内容
这块内容只会在指令的表达式返回 true 值的时候被渲染
如果返回的是 false 则不渲染
v-else
你可以使用 v-else 指令来表示 v-if 的 else 块
v-else 元素必须紧跟在带 v-if 或者 v-else-if 的元素的后面,否则它将不会被识别
v-show
带有 v-show 的元素始终会被渲染并保留在 DOM 中
v-show 只是简单地切换元素的 CSS 中的 display 属性
key
在 if else 语句中两个块里的元素被视为同一类
1 | <template v-if="aaa === true"> |
执行 else 块时,在 if 块中输入的数据不会被清空
除非给他们不一样的 key 属性
1 | <template v-if="aaa === true"> |
列表渲染
v-for
在 v-for 里可以使用数组和对象
数组只有两个参数: item index
对象有三个参数: value name index
1 | <!-- 数组 --> |
1 | <!-- 对象 --> |
参数的名字可以更改,位置不能更改
固定为:
- 两个参数时: (属性值,属性名)
- 三个参数时: (属性值,属性名,下标)
数组的变更
有些方法不会修改原始的数组,而是返回一个新数组
例如 filter()、concat() 和 slice()
当使用非变更方法时,可以用新数组替换旧数组
1 | filter: function(){ |
v-for 也可以接受整数
在这种情况下,它会把模板重复渲染对应次数
1 | <div> |
事件
可以用 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码
1 | <div id="app"> |
1 | let app = new Vue({ |
当 JavaScript 代码过多时,可以放在一个方法里并调用
1 | <div id="app"> |
1 | let app = new Vue({ |
事件的修饰符
修饰符是由点( . ) 开头的指令后缀表示的
1 | .stop |
1 | <!-- 阻止单击事件继续传播 --> |
按键修饰符
1 | <!-- 当按下 enter 键松开时才会执行对应方法 --> |
搬运自: https://github.com/465544769/vue-note