美文网首页
VUE通用指令、过滤器的封装和使用

VUE通用指令、过滤器的封装和使用

作者: 蜀城走马 | 来源:发表于2018-05-29 14:39 被阅读0次

一、指令的封装

import Vue from 'vue';

export const viewImage = Vue.directive('view-image', {
    // 当被绑定的元素插入到 DOM 中时……
    inserted: function (el) {
        el.style.cursor = 'pointer';
        el.title = '点击可查看大图';

        // 图片
        let img = document.createElement('img');
        // 图片外壳
        let imgBox = document.createElement('div');
        // 这个查看图片包含框
        let div = document.createElement('div');
        let closeBox = document.createElement('span');
        // 查看大图的关闭按钮
        closeBox.innerText = '×';
        closeBox.className = 'close';

        div.className = 'view-image-container';
        imgBox.appendChild(img);
        imgBox.appendChild(closeBox);
        div.appendChild(imgBox);
        div.style.visibility = 'hidden';

        document.body.appendChild(div);

        el.addEventListener('click', function () {
            img.src = el.src;
            div.style.visibility = 'visible';
        });

        // 点击关闭按钮隐藏查看大图
        closeBox.addEventListener('click', function () {
            div.style.visibility = 'hidden';
        });
    }
});
  1. Vue2.0 中,代码复用和抽象的主要形式是组件。然而,有的情况下,你仍然需要对普通 DOM 元素进行底层操作,这时候就会用到自定义指令。上面是我写的一个查看大图的指令,主要应用场景是对使用图片标签展示的地方,有查看大图的需要,指令通过绑定指令v-view-image就可以实现点击查看大图的效果。
  2. inserted关键字是自定义指令中的钩子函数(点击此处查看钩子函数详解),会在指令被绑定元素插入父节点时调用。钩子函数中的参数,可以查阅文档进行对应应用场景的使用。
  3. 我在该自定义指令中,主要使用对el元素对象的操作,基本实现逻辑为 获取到被绑定元素的src图片路径,然后展示到查看大图元素中的图片路径。
  4. 只需在main.js文件中对指令进行引入,例如 import { viewImage } from './directive/view-image' 就可以在全局正常使用,不需要再在单个组件中引入使用。具体使用方法例如:<img src="test.png" alt="测试图片" v-view-image>就可以使用。

二、过滤器的封装

Vue.filter('idToName', function(id, arr) {
  // 如果传入id为空,返回空字符串
  if (!value) return '';
  // 如果基础数组数据为空或者未定义,直接返回id值
  if (!arr || arr.length === 0) {
    return id;
  }
  let name = '';
  arr.forEach(item => {
    // 获取到所属name,直接return跳出遍历
    if (item.id === id) {
      return name = item.name;
    }
  })

  return name;

})
  1. 在vue项目中,会有常用场景需要对数据做处理,这时候就可以应用过滤器进行使用。推荐使用上述方法进行全局过滤器定义,相较于对组件内定义来说,优点是可以全局使用,避免重复代码,可以放在同一个文件夹中进行统一维护处理。
  2. 上述过滤器是常用的对例如字典数据进行id转换为name的处理,需要传入的参数为id和数据源数组。具体使用方法为:{{ id| idToName(arr) }},需要提醒的一点是,v-model双向绑定指令不能使用过滤器。被过滤的值,会被当成默认的第一个参数传入,所以此处过滤器的传入参数只需一个参数arr。详细的过滤器使用及参数使用概念可以参考官方文档

相关文章

  • VUE通用指令、过滤器的封装和使用

    一、指令的封装 Vue2.0 中,代码复用和抽象的主要形式是组件。然而,有的情况下,你仍然需要对普通 DOM 元素...

  • Vue 成长之旅 | Vue基础用法一

    一、Vue 基础使用 二 、 Vue的指令与过滤器 1、指令的概念 指令: 是vue为开发者提供的模板语法 , 用...

  • 封装移动端 vue 拖拽指令

    封装移动端 vue 拖拽指令 通过vue自定义指令,将拖拽行为封装为指令 使用transform做移动效果,需要注...

  • vue2(二)

    目录 ◆ vue 简介◆ vue 的基本使用◆ vue 的调试工具◆ vue 的指令与过滤器◆ 品牌列表案例 一 ...

  • VUE初级入门实践

    VUE概述 生命周期 指令 内置指令 自定义指令 过滤器 内置过滤器 VUE1.0版本 VUE2.0版本(无内置过...

  • Vue1.0学习小结1

    目录 什么是Vue? 常用指令 事件 属性 class和style 过滤器 数据交互 1. 什么是Vue? vue...

  • Vue过滤器和vue-resource

    过滤器 之前我们学习了Vue的 vue基本指令 进阶学习,我们需要了解Vue的过滤器:Vue.js允许你自定义过滤...

  • vue 局部指令和全局指令

    vue 自定义指令常用于 DOM 操作 局部指令 1. 简单使用 在组件中 2. 封装 新建 src/utils/...

  • 2018-10-09 vue的简单复习

    主流框架 vue angular react 1.vue简介 简化Dom操作 2.vue指令 3.vue过滤器 ...

  • vue-fullpage-ssr

    原理: 使用vue指令的方式,将fullpage.js进行封装;使其可以与vue或者nuxt项目更优雅的结合。 I...

网友评论

      本文标题:VUE通用指令、过滤器的封装和使用

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