美文网首页
Vue 指令的自定义

Vue 指令的自定义

作者: 千见 | 来源:发表于2018-12-28 13:33 被阅读0次

我们可能需要先知道的


Vue 中自带默认指令(v-ifv-show 等),我们在使用 Vue 框架的时候,这样使用指令的语句

<h3 v-if="flag">hello world</h3>
<h3 v-show="flag">hello world</h3>

然而默认指令并不能完全满足我们的需求,举个栗子:输入框的聚焦

<!-- 不使用框架实现 -->
function setFocus() {
  document.getElementById("input").focus();
}

而在 Vue 中,不建议我们对 DOM 元素进行直接操作,这个时候我们可以自定义指令来实现功能

全局的自定义指令

<!-- 输入框聚焦 -->
Vue.directive("focus", {
  bind: function(el) {
    // 只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置。
    // 如果是和元素的样式有关的最好在bind中执行
  },
  inserted: function(el) {
    // insreted表示元素插入到dom中的时候,会执行inserted函数
    el.focus();
    // 和js行为有关的最好在inserted中去执行,防止失效
  },
  updated: function() {
    // 当Vnode更新的时候,会执行updated,可能会执行多次
  }
});

局部的自定义指令

var vm = new Vue({
  el: "#app",
  data: {},
  methods: {},
  directives: {
    // 自定义私有指令 [指令名称] + [处理函数对象]
    // 设置字体粗细
    fontweight: {
      bind: function (el, binding) {
        el.style.fontWeight = binding.value;
      }
    },
    // 设置字体大小,简易方法
    // 防止没有注意到和上面的区别,强调一下,重点不是 fontweight 没有单引号而 fontsize 有单引号=-=
    'fontsize': function (el, binding) {
      // 这个function等同于把代码写到 bind 和 update 当中去
      el.style.fontSize = binding.value
    }
  }
});

使用

对于新定义好的指令,我们可以这样像默认指令一样使用

<!-- 这里的 "'blue'" 很容易让人忘掉加单引号,如果不加就变成了属性值
(编译过程中系统就会去data找一下有没有这么个属性值,自然会报错),加了的话就是字符串 -->
<input type="text" class="form-control" v-model="id" v-focus v-color="'blue'" />

参数

这一部分最好看官方文档,虽然还是有自己的笔记

el:指令所绑定的元素,可以用来直接操作 DOM 。

binding:一个对象,包含以下属性:

name:指令名,不包括 v- 前缀。(这一点非常重要)
value:指令的绑定值,例如:v-my-directive="1 + 1" 中,绑定值为 2
expression:字符串形式的指令表达式。例如 v-my-directive="1 + 1" 中,表达式为 "1 + 1"。( value 和 expression 要区分开)

如果有不足还望指正,谢谢

相关文章

  • season2-全局API

    第1节:Vue.directive 自定义指令 Vue.directive自定义指令 自定义的指令:changec...

  • Vue div节点滚动事件-加载更多

    使用Vue.directive注册全局指令 绑定事件 对于Vue自定义指令不明白的同学请移步: Vue自定义指令 ...

  • VUE-2:自定义指令、事件

    directive自定义指令 我们还可以通过`Vue`提供的directive方法来自定义指令 注册指令 `vue...

  • vue入门6---vue基本指令、自定义指令、插件

    一、vue常用指令概览 二、vue自定义指令 注册全局指令Vue.directive('my-directive'...

  • vue自定义指令初探

    vue自定义指令初探 一、什么是自定义指令 自定义指令是用来操作DOM的。尽管Vue推崇数据驱动视图的理念,但并非...

  • vue 有自定义指令

    vue 的自定义指令,分为全局自定义指令和局部自定义指令,局部自定义指令等价于局部组件。 自定义指令可以对DOM进...

  • vue自定义指令

    除了内置的指令外,Vue 也允许注册自定义指令。 vue用Vue.directive(id,definition)...

  • vue知识集锦(三)

    自定义指令 除了核心功能默认内置的指令 (v-model和v-show),Vue 也允许注册自定义指令。尽管Vue...

  • Vue指令钩子函数

    Vue指令上篇文章有讲过了,现在分析Vue指令钩子函数。 自定义指令 全局定义:Vue.directive( ' ...

  • Vue基础(五)--自定义指令与过渡

    1.自定义指令 分类:全局指令、局部指令 1.1 自定义全局指令 使用全局方法 Vue.directive(指令I...

网友评论

      本文标题:Vue 指令的自定义

      本文链接:https://www.haomeiwen.com/subject/cppklqtx.html