Vue——自定义指令

2017-03-06  本文已影响624人  懒人成长

自定义指令

Vue.js已经为我们提供了很多默认的指令,例如:v-forv-ifv-bindv-on等,这些指令已经可以帮助我们完成很多的事情,但是当我们有一些特殊化的需求时就需要自己做定制了,这时候自定义指令就登场了。

注册

自定义指令的注册方式和组件的注册类似,也有全局注册和局部注册两种方式。

// 注册一个全局自定义指令 v-focus
Vue.directive('focus', {
  // 当绑定元素插入到 DOM 中。
  inserted: function (el) {
    // 聚焦元素
    el.focus()
  }
})
directives: {
  focus: {
    // 指令的定义---
  }
}

这样我们就可以在标签中使用注册的指令了。

<input v-focus>

钩子函数

钩子函数的参数

下面通过一个🌰来看下这些参数。

<div id="hook-arguments-example" v-demo:hello.a.b="message"></div>
Vue.directive('demo', {
  bind: function (el, binding, vnode) {
    var s = JSON.stringify
    el.innerHTML =
      'name: '       + s(binding.name) + '<br>' +
      'value: '      + s(binding.value) + '<br>' +
      'expression: ' + s(binding.expression) + '<br>' +
      'argument: '   + s(binding.arg) + '<br>' +
      'modifiers: '  + s(binding.modifiers) + '<br>'
  }
})
new Vue({
  el: '#hook-arguments-example',
  data: {
    message: 'hello!'
  }
})

// 结果
name: demo
value: hello!
expression: message
argument: hello
modifiers: {a: true, b: true}
上一篇下一篇

猜你喜欢

热点阅读