vue自定义全局指令, 计算属性computed, 侦听器watch, 过滤器filter

自定义指令

内置指令不能满足或者不方便操作时,vue也允许注册自定义指令, 对普通DOM进行底层操作时, 会使用到自定义指令绑定到元素上执行相关操作

自定义指令分为 全局指令 和 局部指令 , 同时存在时以局部指令为准(局部优先级高)

自定义指令常用的钩子函数: — tip: 自定义指令中不能直接操作vue中的数据和方法,也就是自定义指令中的this不是vue对象

  • bind — 第一次绑定到元素时调用
  • update — 数据更新时调用(指令绑定元素更新时调用,可能在其子元素更新前调用)
  • inserted — 被绑定元素插入父节点时调用(想操作绑定的元素,节点操作一般要找到其父级元素,再通过父级元素找到并操作它)
  • componentUpdated — 数据更新时调用(指令绑定元素与其子元素全部更新才调用)
  • unbind — 只调用一次, 指令与元素解绑时调用(可使用v-if测试,值为false时元素被删除,被调用)
自定义全局指令格式: (一般用全局格式)

Vue.directive(‘指令名’, {
bind(el) { },
update(el){ }
});

tip: 简写: 同时且只使用bind和update这两个钩子函数时,可以简写:
Vue.directive(‘指令名’, (el,bindings)=>{
// 直接写函数方法
// el是当前绑定元素,bindings是额外的传的参数
})

计算属性 - computed

当数据源内的数据需要进行运算时, 在程序中多处使用这个计算结果, 正常会每次使用都会进行运算, 性能不够好,
所以vue提供了计算属性,在computed属性呃逆定义的方法,只要数据源不改变,就只有第一次调用时会运算,然后缓存起来,后面再调用就读缓存
只有数据源改变, 才会重新运算, 性能提升

定义方法格式( 标准写法 — 简写 )

标准写法
computed:{
csum:{
get() { return this.n1 + this.n2 },
set(v) { this.n1 = v; this.n1 = v; return this.n1 + this.n2 } // v是通过修改csum传来的参数, 可接收后操作
// vm.csum = 10; 以这种形式修改
}
}

简写
conputed:{
cusm() {
// 直接写方法
return this.n1 + this.n2
}
}

侦听器 - watch

使用watch来侦听data中数据的变化, watch中的属性一定是data中已经存在的数据,

当需要监听一个对象的改变时,普通的监听无法监听到对象内部属性的改变,只能监听到data内的数据变化,

此时就需要 deep属性 对对象进行深度监听

书写格式
// data内已存在username:‘aaa’
watch: {
username( newVal, oldVal ) { // newVal就是改变后的值, 可以获取后直接操作 }
}

// 深度监听 — 监听对象内数据 — 元素内v-model=“obj.username”
// data内已存在obj: { username:‘aaa’ }
watch: {
obj: {
deep: true,
watch: {
handler( newVal, oldVal ){ // 操作 }
}
}
}

过滤器 - filter

数据渲染之前可以对数据进行进一步处理

小胡子语法 {{ title | mySubstring(5) }} — title是定义在data内

Vue.filter( ‘mySubstring’, (value, len)=>{
return value.substr(0, len) // 字符串截取方法
})

// 第一个形参value接收的永远是 | 之前的参数, 方法()内传的参数在筛选器内第二个参数开始

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值