vue中的自定義指令directive

vue中的自定義指令

註冊一個局部指令

	<template>
	  <div>
	    <h1>{{name}}</h1>
	    <p @click='updateEl'>更新</p>
	   <input type="text" v-focus>
	  </div>
	</template>
	
	<script>
	export default {
	  data () {
	    return {
	      name: '初始化'
	    }
	  },
	  methods:{
	    updateEl(){
	      setTimeout(()=>{
	        this.name = '初始化數據'
	      }, 3000)
	    }
	  },
	  directives: {
	    'focus': {
	      inserted: (el) => {
	        // el指的是當前綁定的元素
	        console.log('被綁定元素插入父節點時調用')
	        el.focus()
	      },
	      bind: (el,binding) => {
	        console.log(binding, '鉤子函數的參數')
	        // 只調用一次, 指令第一次綁定到元素時調用, 用這個鉤子函數可以定義一個在綁定時執行一次的初始化動作
	        el.value = '你好'
	      },
	      update: () => {
	       // 被綁定元素所在的模板更新時調用, 而不論綁定值是否變化。通過比較更新前後的綁定值, 可以忽略不必要的模板更新,當上面更新數據改變時會觸發這個事件
	       console.log('我在的組件更新了!')
	      },
	      componentUpdated: () => {
	        // 被綁定元素所在模板完成一次更新週期時調用
	        console.log('我在的組件完成一次更新更新週期時調用')
	      },
	      unbind: () => {
	        // 元素解除綁定時調用
	        console.log('我和指令解除綁定了')
	      }
	    }
	  }
	}
	</script>
	<style scoped  lang="scss">
	</style>

註冊全局的指令

可以把這段代碼寫在main.js中

Vue.directive('fontcolor',{
  inserted: (el)=> {
    el.style.color = 'orange'
  }
})

在組件中調用

 <span v-fontcolor>全局</span>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章