vue指令:
-
v-text:
用于操作纯文本。如果要更新部分的文本,需要使用 {{ Mustache }} 插值。
示例:
{{msg}}
-
v-html:
v-html用于输出html,它与v-text区别在于v-text输出的是纯文本,浏览器不会对其再进行html解析,但v-html会将其当html标签解析后输出。
示例:
-
v-show:
根据表达式之真假值,切换元素的 display CSS 属性。
-
v-if:
指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回 truthy 值的时候被渲染。
示例:
Vue is awesome!
Oh no
-
v-else:
你可以使用 v-else 指令来表示 v-if 的“else 块,v-else 元素必须紧跟在带 v-if 或者 v-else-if 的元素的后面,否则它将不会被识别。
示例:
Vue is awesome!
Oh no
-
v-else-if:
顾名思义,充当 v-if 的“else-if 块”,可以连续使用,类似于 v-else,v-else-if 也必须紧跟在带 v-if 或者 v-else-if 的元素之后。
A
B
C
Not A/B/C
-
v-for:
应用v-for遍历dom的时候,要加:key="item.id",加了key(一定要具有唯一性) id的checkbox跟内容进行了一个关联。是我们想达到的效果
-
{{item.name}}
-
v-on:
缩写: @
修饰符:
-
stop
- 调用 event.stopPropagation()。 -
prevent
- 调用 event.preventDefault()。 -
capture
- 添加事件侦听器时使用 capture 模式。 -
self
- 只当事件是从侦听器绑定的元素本身触发时才触发回调。 -
{keyCode | keyAlias}
- 只当事件是从特定键触发时才触发回调。 -
native
- 监听组件根元素的原生事件。 -
once
- 只触发一次回调。 -
left
- (2.2.0) 只当点击鼠标左键时触发。 -
right
- (2.2.0) 只当点击鼠标右键时触发。 -
middle
- (2.2.0) 只当点击鼠标中键时触发。 -
passive
- (2.3.0) 以 { passive: true } 模式添加侦听器
用在普通元素上时,可以用 v-on 指令监听原生 DOM 事件,并在触发时运行一些 JavaScript 代码。
{{counter}}
在监听原生 DOM 事件时,方法以事件为唯一的参数。如果使用内联语句,语句可以访问一个 $event 属性:v-on:click="handle('ok', $event)"。
// ...
methods: {
warn: function (message, event) {
// 现在我们可以访问原生事件对象
if (event) event.preventDefault()
alert(message)
}
}
-
v-bind:
缩写: :
修饰符:
-
.prop
- 被用于绑定 DOM 属性 (property)。(差别在哪里?) -
.camel
- (2.1.0+) 将 kebab-case 特性名转换为 camelCase. (从 2.1.0 开始支持) -
.sync
(2.3.0+) 语法糖,会扩展成一个更新父组件绑定值的v-on
侦听器
动态地绑定一个或多个特性,或一个组件 prop 到表达式。
在绑定 class 或 style 特性时,支持其它类型的值,如数组或对象。可以通过下面的教程链接查看详情。
在绑定 prop 时,prop 必须在子组件中声明。可以用修饰符指定不同的绑定类型。
指令可以在其名称后面带一个参数,中间放一个冒号隔开,这个参数通常是HTML元素的特性(attribute)
示例:
// red这个class存在与否,取决于 isRed 是true 或者 false
如果你也想根据条件切换列表中的 class,可以用三元表达式:
不过,当有多个条件 class 时这样写有些繁琐。所以在数组语法中也可以使用对象语法:
data: {
styleObject: {
color: 'red',
fontSize: '13px'
}
}
-
v-model:
可以用 v-model 指令在表单 、
示例:
Message is: {{ message }}
从 vue@2.6.x 开始,Vue 为具名和范围插槽引入了一个全新的语法,即我们今天要讲的主角:v-slot
指令。目的就是想统一 slot
和 scope-slot
语法,使代码更加规范和清晰。既然有新的语法上位,很明显,slot
和 scope-slot
也将会在 vue@3.0.x
中彻底的跟我们说拜拜了。而从 vue@2.6.0
开始,官方推荐我们使用 v-slot
来替代后两者。
-
v-slot:
缩写:
提供具名插槽或需要接收 prop 的插槽
具名插槽:
有时我们需要多个插槽。例如对于一个带有如下模板的 组件:
对于这样的情况, 元素有一个特殊的特性:name。这个特性可以用来定义额外的插槽:(vue 2.6.0后废弃)
一个不带 name 的 出口会带有隐含的名字“default”。
在向具名插槽提供内容的时候,我们可以在一个 元素上使用 v-slot 指令,并以 v-slot 的参数的形式提供其名称:
Here might be a page title
A paragraph for the main content.
And another one.
Here's some contact info
现在 元素中的所有内容都将会被传入相应的插槽。任何没有被包裹在带有 v-slot 的 中的内容都会被视为默认插槽的内容。
然而,如果你希望更明确一些,仍然可以在一个 中包裹默认插槽的内容:
Here might be a page title
A paragraph for the main content.
And another one.
Here's some contact info
任何一种写法都会渲染出:
Here might be a page title
A paragraph for the main content.
And another one.
作用域插槽:
有时让插槽内容能够访问子组件中才有的数据是很有用的。例如,设想一个带有如下模板的 组件:
{{ user.lastName }} (2.6.0以后弃用)
我们想让它的后备内容显示用户的名,以取代正常情况下用户的姓,如下:
{{ user.firstName }}
然而上述代码不会正常工作,因为只有 组件可以访问到 user 而我们提供的内容是在父级渲染的。
为了让 user 在父级的插槽内容可用,我们可以将 user 作为一个 元素的特性绑定上去:
{{ user.lastName }}
绑定在 元素上的特性被称为插槽 prop。现在在父级作用域中,我们可以给 v-slot 带一个值来定义我们提供的插槽 prop 的名字:
{{ slotProps.user.firstName }}
在这个例子中,我们选择将包含所有插槽 prop 的对象命名为 slotProps,但你也可以使用任意你喜欢的名字。
-
v-pre:
跳过这个元素和它的子元素的编译过程,不和data数据冲突。
-
v-block:
就是vue渲染完指定的整个DOM后才进行显示。它必须和CSS样式一起使用。
-
v-once:
只显示DOM第一次渲染的值,以后不改了
示例:
{{message}}
{{message}}
第一次绑定的值:{{message}}