一文了解vue指令与自定义指令

75 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第28天,点击查看活动详情

v-pre

显示原始信息,跳过编译过程

跳过这个元素和它的子元素的编译过过程

{{msg}}

msg

 

v-once 执行一次性的插值,当数据改变时,插值处的内容不会继续更新

{{msg}}

 

事件修饰符

//阻止单击事件继续传播

v-on:click.stop="doThis"

//提交事件不再重载页面

v-on:submit.prevent="onSubmit"

//修饰符可以串联, 阻止冒泡也阻止默认事件

v-on:click.stop.prevent = "doThat"

 

v-on:click.prevent.self 阻止所有的点击

v-on:click.self.prevent 阻止对元素自身的点击

 

v-show和v-if的区别

v-show本质就是标签dispay: none ,控制隐藏

v-if是动态的向DOM树内添加或者删除dom元素

 

v-for key的作用

key来给每一个节点做了一个唯一标识符

key的主要作用是为了高效的更新虚拟DOM

 

表单修饰符

v-model.number="age" //自动将用户输入的值转为数值类型

v-model.trim="msg" //去除首尾空格

v-model.lazy="msg" //在change时而非input时更新

 

自定义指令Vue.directive

注册一个全局的自定义指令

Vue.directive('focus', {

//注册inserted函数表示当绑定了该指令的元素被插入到dom时候会自动触发

inserted: function (el) {

el.focus();

}

})

 

注册全局指令带参数

//bind声明周期,只调用一次,指令第一次绑定到元素时调用,可以进行一次性的初始化配置

//binding为自定义函数形参,自定义属性传过来的值,存在binding.value里面s

Vue.directive('color', {

bind: function(el, binding) {

//根据指令的参数设置背景色

el.style.backgroundColor = binding.value.color;

}

})

msg: {

color: 'blue'

}

 

自定义指令局部指令

 

局部指令,需要定义在directives的选项

directives: {

color: {

bind: function (el, binding) {

el.style.backgroundColor = binding.value.color

}

},

focus: {

inserted: function (el) {

el.focus();

}

}

}

 

computed计算属性

计算属性是基于它们的响应式依赖进行缓存的