zoukankan      html  css  js  c++  java
  • vue自定义指令

    自定义一个TabBar组件:

    <template>
      <div class="tab-bar">
        <div v-for="(item,index) in tabList" :key="index" :class="['common',{active:currentIndex===index}]" @click="currentIndex=index">{{item}}</div>
      </div>
    </template>
    <script>
    export default {
      data() {
        return {
          tabList: ['项目一', '项目二', '项目三'],
          currentIndex: 0
        }
      }
    }
    </script>
    <style lang='less' scoped>
    .tab-bar {
      display: flex;
      .common {
        width: 100px;
        line-height: 36px;
        text-align: center;
        border: 1px solid #000;
        cursor: pointer;
      }
      .active {
        background-color: red;
      }
    }
    </style>

    通过动态绑定类名(active)实现点击高亮。

    封装成指令:

    1、src/directives/navActive.js:

    export default {
      bind: (el, binding) => {
        // 设置初始化高亮类名
        const { className, activeClass, currentIndex } = binding.value
        const children = el.getElementsByClassName(className)
        children[currentIndex].className += ` ${activeClass}`
      },
      update: (el, binding) => {
        // 设置被点击tab的高亮类名,并清除之前的tab的高亮类名
        const { className, activeClass, currentIndex } = binding.value
        const children = el.getElementsByClassName(className)
        children[currentIndex].className += ` ${activeClass}`
        const { currentIndex: oldIndex } = binding.oldValue
        children[oldIndex].className = className
      }
    }

    2、使用

      引入指令并注册指令:

    import NavActive from '@/directives/navActive'
      directives: { NavActive }

      使用指令,并传入对应的参数给指令:(class只需要写common就行了)

      <div class="tab-bar" v-NavActive="{className:'common',activeClass:'active',currentIndex}">
        <div v-for="(item,index) in tabList" :key="index" class='common' @click="currentIndex=index">{{item}}</div>
      </div>
  • 相关阅读:
    Java的内存结构(Memory Structure)和垃圾收集(Garbage Collection)图解
    走遍天下的三大vb控制结构
    程序员快速阅读,绝对不是神话
    Android4.0.3源码分析——开机流程之Zygote
    云端的天使
    提高班的“伞”
    Android 4.0.3 源代码结构分析(一)
    如何在Java中选择Map/List/Set
    关于Hadoop中reducer端combiner的一些思考
    vb添加GIF动态图片
  • 原文地址:https://www.cnblogs.com/wuqilang/p/15109420.html
Copyright © 2011-2022 走看看