关于sy”“nc的语法糖

关于sync的语法糖

语法: <子组件标签  :a.sync="b"  

父组件和子组件同步某个属性时:
以前的方法:利用单向数据流  <Son :myname="name"  @update:myname="v=>name=v" />
现在的方法:利用sync语法糖(父子之间的双向绑定)  <Son :myname.sync="name"/>
注意:update:xx 是固定的

优势:对于父组件而言:少写一个@xxx (不用授权方法给儿子,因为sync已经包含了)
使用场景:仅仅用于 父子组件关于属性的修改




# 自定义指令directive

## 指令:

1 vue提供好的指令: v-for v-if v-show v-html 等 <a v-if=“”
2 自定义指令:自己来定义指令:v-xx,以后也是被用于标签中 <a v-xx=“”


## 场景:

权限控制 :不同的账号看到的组件是不同的


## 分类:

1 全局 : 在某个js中写,能够用于所有组件
import Vue from ‘vue’
Vue.directive(‘指令名称1’,{功能1})
Vue.directive(‘指令名称2’,{功能2})

2 局部 :在组件中写,只能用于当前组件
export default {
directives:{
‘指令名称1’:{
//功能1
},
‘指令名称2’:{
//功能2
}
},


上课只讲全局:

## 指令中的钩子函数

1 bind: 当指令被绑定到某个元素时,才会触发, —只会触发一次
2 inserted: 当被指令绑定后的元素渲染(挂载)时,才出触发 --可能会触发多次(重点)
3 update: 当被指令绑定后的元素发生改变会触发 --可能会触发多次




## 语法:全局

Vue.directive(‘指令名称1’,{
//el能够获取被绑定的dom元素(js对象)
//binding对象.value 返回被绑定时传入的参数 v-xx=“值”
钩子函数(el,binding){}
})




## 步骤:全局

1 在src下新建directives,在该目录下新建myDirectives.js,编辑该js




2 在main.js中 使用即可

import ‘./directives/myDirectives.js’




## 场景1:通过自定义指令实现某个文本框自动获取焦点

import Vue from ‘vue’

//让某个元素能够获取焦点
Vue.directive(‘getFocus’,{
//el能够获取被绑定的dom元素(js对象)
//binding对象.value 返回被绑定时传入的参数 v-xx=“值”
inserted(el,binding){

    el.focus();
}

})

~~~

场景2: 加载多个图,如果图片加载失败,则加载默认图

//加载图片错误时显示默认图
Vue.directive('defaultImg',{
	inserted(el,binding){
        //当图片加载错误时触发
        el.onerror=function(){
            el.src=binding.value
        }
    }
})


<img  v-defaultImg="default_img" 
:src="`http://localhost:3000/img/${item}`" 
v-for=
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值