VUE自定义directives指定使用

本文介绍了如何在Vue中创建并使用自定义指令,详细解析了自定义指令的存放结构,包括ComponentOperation.js和index.js的配置。通过实例展示了在页面上如何调用自定义指令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

官方文档链接:https://cn.vuejs.org/v2/guide/custom-directive.html

自定义指令存放结构

ComponentOperation.js:

import uuid from 'uuid';
import bus from '../../store/js/bus';
//复制
function copy (pageInfo, el){
  const id = el.id;
  var copyEl = pageInfo.filter( info => {return info.id === id;});
  if(null !== copyEl && copyEl.length > 0) {
    var currentElCopy = Object.assign({}, copyEl[0], {id: uuid()});
    pageInfo.push(currentElCopy);
    bus.$emit('updatePageInfo', pageInfo);
  }
}

//删除
function del (pageInfo, el){
  const id = el.id;
  pageInfo = pageInfo.filter( info => {return info.id !== id;});
  bus.$emit('updatePageInfo', pageInfo);
}

//初始化事件
function initEvent (pageInfo, el){
  const id = el.id;
  $("#" + id).find('.common_icon16_addColor').click(function(){
    copy (pageInfo, el);
  });

  $("#" + id).find('.common_icon16_delColor').click(function(){
    del (pageInfo, el);
  });
}

export default {
  // 当被绑定的元素插入到 DOM 中时……
  inserted: function (el, binding) {
    const { pageInfo } = binding.value;
    initEvent(pageInfo, el);
  }
};

index.js:

import ComponentOperation from './ComponentOperation';

const install = function (Vue) {
  Vue.directive('component-operation', ComponentOperation);
};

if (window.Vue) {
  Vue.use(install);
}

ComponentOperation.install = install;
export default ComponentOperation;

页面调用:

<template>
    <el-row v-component-operation="{pageInfo:pageInfo}" :dType="dType">
      <div style="float: right;">
        <em class="common_icon16_addColor"></em>
        <em class="common_icon16_delColor"></em>
      </div>
    </el-row>
</template>

<script>

  import ComponentOperation from '../../../directive/opertion/index';

  export default {

    directives: { ComponentOperation },

    name: 'HUIROW',

    data() {
      return {}
    },

    props: {
      dType: {
        type: String,
        default: 'Row'
      },
      pageInfo: {
        type: Array,
        default: []
      }
    },

    methods: {}
  };
</script>

<style scoped>
.el-row {
  min-height: 42px;
  border: 1px dashed #00a0e9;
}
.common_icon16_addColor, .common_icon16_delColor {
  display: block;
  width: 18px;
  height: 18px;
  background: url(https://cdns1.dajiashequ.com/resources/v1/images/00efed0b.common_controlsContainerForm_icon18.png?v=2015.10.28) no-repeat;
  cursor: pointer;
  float: left;
  margin-left: 5px;
}

.common_icon16_delColor {
  background-position: -18px 0;
}
</style>

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值