head代码:
<script type="text/javascript" src="bower_components/jquery/dist/jquery.min.js"></script> <script type="text/javascript" src="bower_components/vue/dist/vue.min.js"></script>
body部分html代码:
<div id="app"> <div id="s" v-defaultvalue></div> <span v-showing="show">我是自定义showing指令绑定的span</span> </div>
script部分的代码:
<script> //同样使用Vue.directive({})可声明一个全局变量 Vue.directive( 'defaultvalue',{ //inserted 为钩子函数,即为在执行某项操作时触发的方法,可在自定义指令中使用的有: //bind: 只调用一次,指令第一次绑定到元素时调用,用这个钩子函数可以定义一个在绑定时执行一次的初始化动作。 //inserted: 被绑定元素插入父节点时调用(父节点存在即可调用,不必存在于 document 中)。 //update: 被绑定元素所在的模板更新时调用,而不论绑定值是否变化。通过比较更新前后的绑定值,可以忽略不必要的模板更新 //componentUpdated: 被绑定元素所在模板完成一次更新周期时调用。 //unbind: 只调用一次, 指令与元素解绑时调用。 inserted:function(el){ //目标元素作为参数传过来 el.innerHTML="我是一个自定义指令绑定的div" } } ); new Vue({ el:"#app", data:{ show:false }, directives:{ //创建局部的自定义指令,写一个与v-show一样效果的v-showing //钩子函数的参数主要有四个 //el:当前操作的元素标签 //binding:绑定的各项值主要有 //name: 指令名,不包括 v- 前缀。这里是showing //value:指令的绑定值,这里是false //oldValue: 指令绑定的前一个值,仅在 update 和 componentUpdated 钩子中可用。无论值是否改变都可用。如果有操作把this.showing改为true,此时就为false //expression: 绑定值的表达式或变量名。假使我绑定是“show==true”,那么expression就是s“how==true” //arg: 传给指令的参数。例如 v-my-directive:foo, arg 的值是 "foo"。 //modifiers: 一个包含修饰符的对象。 例如: v-my-directive.foo.bar, 修饰符对象 modifiers 的值是 { foo: true, bar: true }。 //vnode: Vue 编译生成的虚拟节点。 //oldVnode: 上一个虚拟节点,仅在 update 和 componentUpdated 钩子中可用。 showing:{ inserted:function(el,binding){ console.log(binding.value==true); if(binding.value==true){ el.style.display='block'; }else{ el.style.display='none'; } } } } }); </script>