6--vue自定义指令
vue自定义指令分全局自定义指令和局部自定义指令
每个指令都是一个对象
全局自定义指令---全局 API
Vue.directive()
局部自定义指令---directives 选项/资源
directives:{
},局部自定义指令
(1)指令不赋值
在vue实例中自定义一个red指令
<script type="text/javascript">
Vue.directive()
var vm = new Vue({
el:'#app',
data:{
},
directives:{
red:{
//当被绑定的元素插入到 DOM 中时
inserted(el){
console.log('inserted...')
el.style.color = 'red'
}
}
},
methods:{
}
})
</script>vue 自定义指令 钩子函数inserted,在 当被绑定的元素插入到 DOM 中时 自动调用
钩子函数
inserted(){ 没有调用他,( 当被绑定的元素插入到 DOM 中时 )他自动执行
}
在视图层使用:
<div id="app"> <div v-red> “津”夜灯火璀璨</div> </div>
预览效果,如下所示:

(2)指令赋值
在vue实例中,定义指定指令
binding是
一个对象
binding.value~~指令的绑定值(传递过来的值)
directives:{
// 指令赋值
color:{
inserted(el,binding){
console.log(binding.value)
el.style.color = binding.value
}
}
},在视图层,使用自定义指令
注意:这里~~指令中的值用js的方式表示的,我们需要把颜色放置在字符串‘’中。方可生效。否则报错!
<div v-color="'blue'">长征二号F火箭</div>
预览效果,如下所示:

全局自定义指令
注意:
定义多个vue实例,每个vue实例中数据中心data中的数据,不能在其他实例的视图层中使用
vuejs:
<script type="text/javascript">
// 定义多个vue实例,每个vue实例中数据中心data中的数据,不能在其他实例的视图层中使用
new Vue({
el:'#app1',
data:{
i:0
}
})
new Vue({
el:'#app2',
data:{
}
})
new Vue({
el:'#app3',
data:{
msg:'hello'
}
})
</script>html:
<div id="app1">
{{i}}
</div>
<div id="app2">
{{i}}
</div>
<div id="app3">
{{i}}
</div>其他vue实例的视图层使用i变量,报bug。
预览效果如下所示:

如果我们定义 全局自定义,就可以在多个vue实例中去使用
vuejs:
<script type="text/javascript">
Vue.directive('red',{
inserted(el){
el.style.color = 'red'
}
})
new Vue({
el:'#app1',
data:{
i:0
}
})
new Vue({
el:'#app2',
data:{
}
})
new Vue({
el:'#app3',
data:{
}
})
</script>在视图层,在不同的vue实例中,使用自定义全局指令
<div id="app1">
{{i}}
</div>
<div id="app2">
<div v-red>你好</div>
</div>
<div id="app3">
<div v-red>vue</div>
</div>预览效果,如下所示:

钩子函数(自定执行的函数,我们都可以称之为钩子函数)不用你管,会自动执行
生命周期
路由
自定义指令
自定义指令中的钩子函数有:
bind函数:每当指令绑定到元素上的时候,会立即执行这个 bind 函数,只执行一次
拿不到父元素
和样式相关的操作,一般都可以在 bind 执行
inserted:表示元素 插入到DOM中的时候,会执行 inserted 函数【触发1次】
和js 行为有关的最好写入Inserted去执行,js放置不生效
update:当VNode更新的时候,会执行 updated, 可能会触发多次


还没有留言,还不快点抢沙发?