vue指令知识点

17 篇文章 0 订阅
4 篇文章 0 订阅

这里我收集了一些vue面试问到的知识点,通过查看网站上对应的内容,对这些内容归纳总结:
1.vue中的指令:

1.v-bind简写":"
2.v-model实现数据双向绑定
3.v-on 简写$,绑定函数
4.v-if,v-else,v-else-if 判断条件
5.v-show 通过设置display:none和display:block控制dom元素显示隐藏
6.v-text 将字符串覆盖到标签内容中,不会解析字符串中的标签
7.v-html 将字符串覆盖到标签内容中,会解析字符串中的标签
8.v-for 循环遍历数组
此外还有:v-pre,v-cloak, v-once

2.指令v-model的原理:

<input v-model="price">

本质上等于:

<input type="text"  :value="price"  @input="price=$event.target.value">

通过input标签的input事件进行绑定,使用的是v-bind指令和input语法糖实现数据更新
在组件上使用v-model时:
父组件:

<template>
 	<child v-model="name"></child>
</template>

子组件:

<template>
	<input v-model="name"  @input="$emit('input',$event.target.value)"/>
</template>
export default {
	props:{
		value:String
	}data(){
		return {}
	}

但是对于checkbox,radio这些标签使用input事件就不太适合了,这时候就必须使用新的触发事件,vue提供了model来绑定新的事件
父组件:

<template>
 	<child v-model="checked"></child>
</template>

子组件:

<template>
<input type="checkbox" v-model="checked"  @change="$emit('change',$event.target.checked)"/>
</template>
export default {
	model:{
		prop:'checked', //绑定prop中的数据
		event:'change' //绑定事件
	},
	props:{
		checked:Boolen
	}data(){
		return {}
	}

3.自定义指令

// 注册一个全局自定义指令 `v-focus` 
Vue.directive('focus', {  		
	inserted: function (el) { // 当被绑定的元素插入到 DOM中时……    
    // 聚焦元素
    el.focus()   
 } })

如果想注册局部指令,组件中也接受一个 directives 的选项:

directives: {
  focus: {
    // 指令的定义
    inserted: function (el) {
      el.focus()
    }
  }
}

然后你可以在模板中任何元素上使用新的 v-focus property,如下:

<input v-focus>

一个指令定义对象可以提供如下几个钩子函数 (均为可选):

bind:只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置。

inserted:被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)。

update:所在组件的 VNode 更新时调用,但是可能发生在其子 VNode
更新之前。指令的值可能发生了改变,也可能没有。但是你可以通过比较更新前后的值来忽略不必要的模板更新 (详细的钩子函数参数见下)。
componentUpdated:指令所在组件的 VNode 及其子 VNode 全部更新后调用。

unbind:只调用一次,指令与元素解绑时调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值