Vue数据监视 内置指令 自定义指令

Vue监视数据的原理:

  1. vue会监视data中所有层次的数据
  2. 检测对象中的数据:
  • 通过setter实现监视,且要在new Vue时就传入要监测的数据
  • (1)对象中后追加的属性:Vue默认不做响应式处理
  • (2)如需给后添加的属性做响应式,可以采用如下API
Vue.set(target,propertyName/index,value)
//或者
vm.$set(target,propertyName/index,value)
  1. 监测数组中的数据:
  • 通过包裹数组更新元素的方法实现,本质上做了以下两件事情:
  • (1)调用原生对应的方法对数组进行更新
  • (2)重新解析模板,进而更新页面
  1. 在Vue修改数组中的某个元素,一定要使用如下方法
  • (1)使用这些API:push(),pop(),shift(),unshift(),splice(),sort()
  • (2)Vue.set()或vm. s e t ( ) 【注意】: V u e . s e t ( ) 和 v m . set() 【注意】:Vue.set()和vm. set()【注意】:Vue.set()vm.set()不能给vm或vm根数据对象添加属性

内置指令

  • v-bind:单向绑定解析表达式,可简写位 :xxx
  • v-model:双向数据绑定
  • v-for:遍历数组/对象/字符串
  • v-on:绑定事件监听,可简写为@
  • v-if:条件渲染(动态控制节点是否存在)
  • v-else:条件渲染(动态控制节点是否存在)
  • v-show:条件渲染(动态控制节点是否展示)
  • v-text:
    • 向其所在的节点中渲染文本内容
    • 与插值语法的区别:v-text会替换掉节点中的内容,插值语法不会
  • v-html:
      1. 作用:向指定节点中渲染包含html结构的内容
      1. 与插值语法的区别:
    • (1)v-html会替换掉节点中所有的内容,插值语法不会
    • (2)v-html可以识别html结构
      1. 【注意】:v-html有安全性问题
    • (1)在网站上动态渲染任意HTML是非常危险的,容易导致xss攻击
    • (2)一定要在可信的内容上使用v-html,永远不要在用户提交的内容上
  • v-cloak(没有值)
      1. 本质是一个特殊的属性,Vue实例创建完毕并接管容器后,会删除掉v-cloak属性
      1. 使用css配合v-cloak可以解决网速慢时页面展示出{{xxx}}的问题
  • v-once(没有值):所在节点在初次动态渲染之后,就是为静态内容了,以后数据的改变不会引起v-once所在结构的更新,可以用于优化性能
  • v-pre:让vue跳过所在节点的编译过程,可利用它跳过:没有使用指令语法、没有使用插值语法的节点,会加快编译

自定义指令

new Vue({
//有两种自定义形式:函数式和对象式
//这样定义的指令为局部指令
	directives:{
	//big是自定义指令,使用时通过v-big使用
	//调用时机:指令与元素成功绑定时,指令所在的模板被重新解析时
		big(element,bingding){
		console.log(this)//这里面的this是window
			element.innerText = bingding.value * 10
		}
	//自定义fbind函数
		fbind:{
			//指令与元素成功绑定时调用
			bind(){
			}
			//指令所在元素被插入页面时调用
			inserted(){
			}
			//指令所在模板被重新解析时调用
			update(){
			}
		}
	}
}).$mount("#root")

全局自定义指令

Vue.directive('fbind',{
		//指令与元素成功绑定时调用
		bind(){
		}
		//指令所在元素被插入页面时调用
		inserted(){
		}
		//指令所在模板被重新解析时调用
		update(){
		}
})

【注意】指令名如果是多个单词,要使用kebab-case命名方式,不要用camelCase命名。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue.js是一种流行的JavaScript框架,用于构建用户界面。它提供了一种简洁的方式来处理数据和DOM的交互。在Vue.js中,自定义指令是一种扩展Vue.js功能的方式,可以用于在DOM元素上添加特定的行为。 在Vue.js 2中,自定义指令通过`Vue.directive`方法来定义。自定义指令可以用于操作DOM元素、监听事件、修改样式等。例如,我们可以创建一个自定义指令来实现点击元素时改变背景颜色的功能: ```javascript Vue.directive('change-color', { bind: function (el, binding) { el.addEventListener('click', function () { el.style.backgroundColor = binding.value; }); } }); ``` 在上面的例子中,我们使用`bind`钩子函数来绑定指令,并在元素上添加点击事件监听器。当点击元素时,会根据指令的值来改变元素的背景颜色。 而在Vue.js 3中,自定义指令的写法有所改变Vue.js 3引入了`createApp`方法来创建应用程序实例,并使用`app.directive`方法来定义自定义指令。例如,我们可以使用Vue.js 3的语法来重新实现上述的自定义指令: ```javascript const app = Vue.createApp({}); app.directive('change-color', { mounted(el, binding) { el.addEventListener('click', function () { el.style.backgroundColor = binding.value; }); } }); app.mount('#app'); ``` 在上面的例子中,我们使用`mounted`钩子函数来绑定指令,并在元素上添加点击事件监听器。当点击元素时,会根据指令的值来改变元素的背景颜色。 总结一下,Vue.js 2和Vue.js 3中的自定义指令的定义方式有所不同,但都可以用于扩展Vue.js的功能,实现特定的行为。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值