• Vue自定义指令


    一 简介

    自定义指令:以V-开头的,扩展了HTML的语法,通过自定义指令可以操作DOM:

    栗子一:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <script src="vue2.2.js"></script>
        </head>
        <body>
        // 注册一个全局的自定义指令 <div id="app"> <div v-lang="color">{{num}}</div> <p><button @click="add">add</button></p> </div> </body> <script type="text/javascript"> Vue.directive('lang',function(el,binding){ //不用加V- console.log(el)//el指向的是当前实例绑定的对象<div v-lang="color">{{num}}</div> console.log(binding)//输出的是一个对象obj el.style='color:'+binding.value//binding.value就是color颜色red。 }) var vm = new Vue({ el:"#app", data:{ num:10, color:'red' }, methods:{ add:function(){ this.num++; } } }) </script> </html>

    栗子二:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
      //局部注册例子 <div id="app"> <p v-color="red">我是自定义指令</p> </div> <script src='vue.js'></script> <script> new Vue({ el:'#app', data:{ red:'red' }, directives: { color: { // 指令的定义 inserted: function (el,binding) { el.style.color = binding.value } } } }) </script> </body> </html>

    钩子函数的参数 (即 elbindingvnode 和 oldVnode):

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

    binding: 一个对象,包含指令的很多信息。

    vnode: Vue编译生成的虚拟节点。

    oldVnode:上一个虚拟节点。

    二 钩子函数

    举栗:

    Vue.directive('lang',{
      bind:function () {
        console.log("1111"); //被绑定
      },
      inserted:function (el,binding) {
        el.style="color:"+binding.value;//绑定到节点
      },
      update:function () {
        console.log("3333");//组件更新
      },
      componentUpdated:function () {
        console.log("44444");//组件更新完成
      },
      unbind: function() {
        console.log('5555');//解绑
      }
    });

    一个指令定义对象可以提供如下几个钩子函数 (均为可选):

    • bind:只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置。

    • inserted:被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)。

    • update:所在组件的 VNode 更新时调用,但是可能发生在其子 VNode 更新之前。指令的值可能发生了改变,也可能没有。但是你可以通过比较更新前后的值来忽略不必要的模板更新 (详细的钩子函数参数见下)。

    • componentUpdated:指令所在组件的 VNode 及其子 VNode 全部更新后调用。

    • unbind:只调用一次,指令与元素解绑时调用。

  • 相关阅读:
    使用图表控件
    XPath 语法规则入门
    用javascript生成日历控件
    .NET开发人员应该关注的七个开源项目
    浅谈软件技术的发展趋势及定位
    System.Runtime.InteropServices.Automation
    【摘录】手机操作系统三国时代的结束
    .NET的资源并不限于.resx文件,你可以采用任意存储形式[上篇] (转载)
    OSPaas征途(前言)
    .NET的资源并不限于.resx文件,你可以采用任意存储形式[下篇]
  • 原文地址:https://www.cnblogs.com/1156063074hp/p/10167631.html
Copyright © 2020-2023  润新知