vue(二) directive定义全局和局部指令

vue.jpg

directive定义全局和局部指令以及指令简写

1.使用Vue.directive()定义一个全局指令    Vue.directive('指令名称',{对象})
2.参数一:指令的名称,定义时指令前面不须要写v-
3.参数二:是一个对象,该对象中有相关的操做函数
4.在调用的时候必须写v-
5.自定义指令中的经常使用的3个钩子函数:
    5.1bind:
      1.指令绑定到元素上回马上执行bind函数,只执行一次
      2.每一个函数中第一个参数永远是el,表示绑定指令的元素,el参数是原生js对象
      3.经过el.focus()是没法获取焦点的,由于只有插入DOM后才生效
    5.2inserted:
      1.inserted表示一个元素,插入到DOM中会执行inserted函数,只触发一次
    5.3updated:
      1.当VNode更新的时候会执行updated,能够触发屡次
6.定义一个局部指令
    测试案例步骤:
    1.首先须要在html中建立一个盒子
    2.接着须要经过实例化Vue而且经过el将盒子所对应的id进行绑定
    3.在盒子里面所对应的要自定义的标签上经过v-xxx标注
    局部定义的格式:
      directives:{
            'xxx':{
              bind:function(el,binding){
                el.style.xxx = binding.value
            }
          }
      }
 7.指令函数的简写
    function等同于将代码写入bind和update里
    directive:{    
        'xxx':function(el,binding){
            el.style.xxx = binding.value
        }
    }
复制代码
<!DOCTYPE html>
<html>
  <head>
  	<meta charset="utf-8" />
  	<title></title>
  	<script src="js/vue-2.4.0.js" type="text/javascript" charset="utf-8"></script>
  </head>
  <body>
  	<div id="box">
  		<p v-fontsize="'20px'" v-color="'green'">{{msg}}<input type="text" v-focus /></p>
  		<p v-color="'red'">{{msg}}<input type="text" v-color="'red'" /></p>
  	</div>
  </body>
  <script type="text/javascript">
  	//使用Vue.directive()定义一个全局指令
  	//1.参数一:指令的名称,定义时指令前面不须要写v-
  	//2.参数二:是一个对象,该对象中有相关的操做函数
  	//3.在调用的时候必须写v-
  	Vue.directive('focus',{
  		//1.指令绑定到元素上回马上执行bind函数,只执行一次
  		//2.每一个函数中第一个参数永远是el,表示绑定指令的元素,el参数是原生js对象
  		//3.经过el.focus()是没法获取焦点的,由于只有插入DOM后才生效
  		bind:function(el){
  			//el.focus()
  		},
  		//inserted表示一个元素,插入到DOM中会执行inserted函数,只触发一次
  		inserted:function(el){
  			el.focus()
  		},
  		//当VNode更新的时候会执行updated,能够触发屡次
  		updated:function(el){
  			//el.focus()
  		}
  	})
  	//自定义一个设置字体颜色指令
  	Vue.directive('color',{
  		//只要经过指令绑定给了元素,元素必定会显示在页面上
  		//通常状况和样式有关的使用bind函数
  		bind:function(el,binding){  //经过binding来传递值
  			el.style.color = binding.value
  		}
  	})
  	//实例化Vue
  	var vm = new Vue({
  		el:'#box',
  		data:{
  			msg:'测试:'
  		},
  		//定义一个局部指令
  		directives:{  //自定义一个局部指令
  			'color':{  //设置字体颜色
  				bind:function(el,binding){
  					el.style.color = binding.value
  				}
  			},
  			//指令函数的简写:
  			//function等同于将代码写入bind和update里
  			'fontsize':function(el,binding){  //设置字体大小
  				el.style.fontSize = parseInt(binding.value) + 'px'  
  			}
  		}
  	})
  </script>
</html>
复制代码
相关文章
相关标签/搜索