Vue2.0笔记——自定义指令

自定义指令

自定义指令主要用于,除系统提供外,自己对DOM的底层操作。
例如当页面加载时需要将一个文本框为自动获得焦点。只要你在打开这个页面后还没点击过任何内容,这个输入框就应当还是处于聚焦状态。

我们通过全局自定义指令和局部自定义指令来讲解autofouce案例。

全局自定义指令

在全局API中通过Vue.directive( id, [definition] )来注册或获取全局指令。
参数:

  • id表示自定义的指令名称
  • definition为自定义指令的定义,一般可以含有几个生命周期钩子函数
  • bind() 指令第一次绑定到元素上时调用,且只调用一次,可执行初始化操作
  • inserted() 被绑定元素插入到DOM时调用
  • update() 被绑定元素所在模板更新时调用
  • componentUpdated() 被绑定元素所在模板完成一次更新周期时调用
  • unbind() 指令与元素解绑时调用,只调用一次

bind与inserted在加载页面初始化实例并挂载之后调用
update,componentUpdated 当指令所绑定的元素模板更新时调用
unbind解绑时调用

语法:

// 注册
Vue.directive(‘my-directive‘, {
  bind: function () {},
  inserted: function () {},
  update: function () {},
  componentUpdated: function () {},
  unbind: function () {}
})

// 注册 (指令函数)
Vue.directive(‘my-directive‘, function () {
  // 这里将会被 `bind` 和 `update` 调用
})

// getter,返回已注册的指令
var myDirective = Vue.directive(‘my-directive‘)

示例:

//el参数为绑定的元素,自动载入
Vue.directive(‘focus‘,{
    inserted:function(el){
        console.log(el);
        el.focus();
    }
});

<div id="app">
    <input type="text" v-focus>
</div>

2.当然,你也可以使用简单的指令函数。

// 注册 (指令函数)
Vue.directive(‘my-directive‘, function () {
  // 这里将会被 `bind` 和 `update` 调用
})

3.我们可以在bind函数中为其添加两个参数,第一个是绑定的元素,第二个是当前自定义指令对象。

Vue.directive(‘focus‘,{
    bind(el,binding){
        console.log(binding);
    }
});

局部,实例的自定义指令

局部的自定义指令定义在directives选项中,所配置的数据与全局的完全一样。

directives:{
    focus:{
        inserted(el){ //当被绑定元素插入到DOM的时候,进行自动获焦
        el.focus();
    }
}

focus即为指令名称,使用时直接,v-focus即可。

el参数和binding参数,获得绑定元素与当前指令对象只有在bind函数绑定之后才能得到值。所以inserted,update也是可以的。

原文地址:http://blog.51cto.com/zouzhelu/2105982

时间: 2024-08-28 17:07:14

Vue2.0笔记——自定义指令的相关文章

Vue2.0笔记——Vue实例

Vue实例 每个 Vue 应用都是通过用 Vue 函数创建一个新的 Vue 实例开始的: var vm = new Vue({ // 选项 }) 当创建一个 Vue 实例时,你可以传入一个选项对象,就如前面所提到的如:data,methods,computed,watch等等.一个 Vue 应用由一个通过 new Vue 创建的根 Vue 实例,以及可选的嵌套的.可复用的组件树组成.举个例子,一个 todo 应用的组件树可以是这样的: 根实例Root └─ TodoList ├─ TodoIte

Vue2.0笔记——{{}}模板与自定义过滤器

模板语法 让我们回到最开始 <div id="app"> <h1>{{message}}</h1> </div> <script> var vm = new Vue({ el:'#app', data:{ message:'HelloWorld' } }) </script> 这是一个HelloWorld,简单的通过模板输出.我们称之为数据绑定,而最常见的就是"Mustache"语法 (双大括号

Vue2.x directive自定义指令

directive自定义指令 除了默认设置的核心指令( v-model 和 v-show ),Vue 也允许注册自定义指令. 注意,在 Vue2.0 里面,代码复用的主要形式和抽象是组件--然而,有的情况下,你仍然需要对纯 DOM 元素进行底层操作,这时候就会用到自定义指令. 官方建议directive是对纯 DOM 元素进行底层操作使用,一般情况下还是建议使用组件的复用. directive的意义 自定义指令是用来操作DOM的. 尽管数据驱动是Vue的核心之一,但是在实际情况下,并不是所有的情

Vue2.0笔记——组件

组件 (Component) 是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.组件是自定义元素,Vue.js 的编译器为它添加特殊功能. 使用组件 组件的注册与使用 全局注册 我们需要通过一个全局的API来构造.Vue.extend(options)用法:使用基础 Vue 构造器,创建一个"子类".参数是一个包含组件选项的对象.同时还需要一个API通过这个构造器来注册组件,之后才能使用.Vue.component(id, [definition])用

AngularJS笔记--自定义指令

在前端开发中, 我们会遇到很多地方都会用到同一种类型的控件.AngularJS提供了自定义指令功能,我们可以在指令里面定义特定的html模板.提供给前台html调用. 一. 指令的简单定义.  下面定义了一个简单的控件,点击后调转到博客园. Note: 1.命名方式:directive必须以小写字母开头,其中如果后面由大写字母,html调用的时候就要用 - 将单词分开. <html> <script src='angular.js'></script> <scri

Vue2.0笔记——Vue常用实例属性,实例方法

实例属性 vm.$el vm.$data vm.options vm.$refs vm.$root vm.$el 该实例属性用于获取Vue实例使用的根DOM元素,即el选项所指的元素DOM <body> <div id="app"> <h4>你好,这是四级标题</h4> <p>这是一个段落,我什么都不想说</p> </div> <button onclick="getEl()"

Vue2.0笔记——属性绑定和Class与Style绑定

属性绑定 通过指令v-bind可以绑定属性,该指令同v-on一样,也有一个简写,":"冒号.绑定元素的属性,并且可与元素的原属性共存.当原属性有值时则显示原属性的值,无值则使用绑定的值. <div id="app"> <img :src="url" :width="width" width="800" :height="height"/> </div>

Vue2学习笔记:v-model指令

1.v-model指令 <!DOCTYPE html> <html> <head> <title></title> <script src="https://unpkg.com/vue/dist/vue.js"></script> <script type="text/javascript"> window.onload = function(){ var vm = ne

Vue2.0笔记——起步

起步 同其他jquery一样,Vue也是需要引用的通过<script>标签引入js文件 <script src="js/vue.js"></script> 你可以去github下载,也可以直接引用Vue的js https://github.com/vuejs/vue/releases 或 <script src="https://cdn.jsdelivr.net/npm/vue"></script> 声明式