arg:传给指令的参数,可选。例如
v-my-directive:foo 中,参数为
"foo"。
modifiers:一个包含修饰符的对象。例如:
v-my-directive.foo.bar 中,修饰符对象为
{ foo: true, bar: true }。
vnode:Vue 编译生成的虚拟节点。
oldVnode:上一个虚拟节点,仅在
update 和
componentUpdated 钩子中可用。除了
el 之外,其它参数都应该是只读的,切勿进行修改。如果需要在钩子之间共享数据,建议通过元素的
dataset 来进行。下面我们来分析几个简单的钩子函数,及其参数
代码如下:(看完代码我再将其)
<div id="app">
<span v-mmm='{color:color, fontSize:"20px"}'>bind的对象形式</span>
<br>
<button @click='changeStyle'>改变颜色</button>
</div><script>
const vm = new Vue({
el: '#app',
data: {
color: 'cyan',
style1: {color: 'lightblue'},
style2: {fontSize:"20px"}
},
directives: {
mmm: {
bind(el,binding) {
// binding.value = {color:color, fontSize:"20px"}
if(binding.value.constructor === Object) {
Object.keys(binding.value).forEach(key => {
el.style[key] = binding.value[key];
})
}
}
}
},
methods: {
changeStyle() {
this.color = 'lightpink'
}
},
})
</script>
效果图:

下面我们换成
update 钩子函数:
update(el,binding) {
// binding.value = {color:color, fontSize:"20px"}
if(binding.value.constructor === Object) {
Object.keys(binding.value).forEach(key => {
el.style[key] = binding.value[key];
})
}
}效果图:

当我们点击按钮后:

我们发现他会随着数据改变而更新,但是他刚开始不会调用它,只有当数据发生改变之后才会调用该钩子函数










