广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue实现自定义组件挂载原型上
  • 539
分享到

vue实现自定义组件挂载原型上

vue自定义组件vue挂载原型vue组件挂载原型上 2022-11-13 14:11:34 539人浏览 八月长安
摘要

目录自定义组件挂载原型上以elementUI二次分装dialog举例在原型上挂载方法和组件挂在方法,在main.js中挂载组件自定义组件挂载原型上 以elementUI二次分装dia

自定义组件挂载原型上

以elementUI二次分装dialog举例

PageDialog.Vue

<!-- 页面提示弹框 -->
<template>
    <el-dialog
      :visible.sync="show"
      class="page-dialog-wrapper"
      custom-class="page-dialog-component"
      :width="width"
      :append-to-body="true"
      :show-close="false"
      :close-on-click-modal="false">
      <div class="container">
        <div class="title">
          <slot name='title-icon'>
            <i
              :class="titleIcon"
              v-if="titleIcon">
            </i>
          </slot>
          {{title}}
          <i
            class="el-icon-close close-btn"
            @click="close"
            v-if="showClose">
          </i>
        </div>
        <div class="content">
          <slot>
            <div class="text" v-html="message"></div>
          </slot>
          <div class="btns" v-if="showConfirm || showCancel">
            <el-button
              class="btn cancel"
              @click="close"
              v-if="showCancel">
              {{cancelText}}
            </el-button>
            <el-button
              class="btn"
              @click="confirm"
              v-if="showConfirm">
              {{confirmText}}
            </el-button>
          </div>
        </div>
      </div>
    </el-dialog>
</template>
<script>

export default {
  name: 'PageDialoGComponent',
  components: {},
  props: {
    show: { // 隐藏显示
      type: Boolean,
      default: false,
    },
    width: { // 宽度
      type: String,
      default: '600px',
    },
    title: { // 标题
      type: String,
      default: '提示',
    },
    titleIcon: { // 标题icon
      type: String,
      default: '',
    },
    showCancel: { // 是否显示取消按钮
      type: Boolean,
      default: false,
    },
    cancelText: { // 取消按钮文本
      type: String,
      default: '取消',
    },
    showConfirm: { // 是否显示确认按钮
      type: Boolean,
      default: true,
    },
    confirmText: { // 确认按钮文本
      type: String,
      default: '确定',
    },
    message: { // 提示内容
      type: String,
      default: '这里是提示语',
    },
    showClose: { // 是否显示关闭按钮
      type: Boolean,
      default: true,
    },
  },
  methods: {
    // 确定
    confirm() {
      this.$emit('confirm');
    },
    // 关闭
    close() {
      this.$emit('close');
    },
  },
};
</script>
<style lang='less' scoped>
// 样式区
</style>

同目录新建index.js

import vue from 'vue';
// 这里就是我们刚刚创建的那个静态组件
import pageDialog from './PageDialog.vue';
// 返回一个 扩展实例构造器
const DialogConstructor = vue.extend(pageDialog);
// 定义弹出组件的函数
function showDialog(options) {
  return new Promise((resolve, reject) => {
    const dialogDom = new DialogConstructor({
      el: document.createElement('div'),
    });
    dialogDom.width = options.width || dialogDom.width;
    dialogDom.title = options.title || dialogDom.title;
    dialogDom.titleIcon = options.titleIcon || dialogDom.titleIcon;
    dialogDom.showCancel = options.showCancel || dialogDom.showCancel;
    dialogDom.cancelText = options.cancelText || dialogDom.cancelText;
    dialogDom.showConfirm = options.showConfirm || dialogDom.showConfirm;
    dialogDom.confirmText = options.confirmText || dialogDom.confirmText;
    dialogDom.message = options.message || dialogDom.message;
    dialogDom.showClose = options.showClose || dialogDom.showClose;
    dialogDom.show = true;
    document.body.appendChild(dialogDom.$el);
    dialogDom.confirm = function () { // 确定按钮
      resolve();
      dialogDom.show = false;
    };
    dialogDom.close = function () { // 取消按钮
      reject();
      dialogDom.show = false;
    };
  });
}
// 注册为全局组件的函数
function reGIStryDialog() {
  // 将组件注册到 vue 的 原型链里去,
  // 这样就可以在所有 vue 的实例里面使用 this.$pageDialog()
  vue.prototype.$pageDialog = showDialog;
}
export default registryDialog;

main.js中引入

import pageDialog from '../components/page-dialog/index';
Vue.use(pageDialog)

可以html组件使用

    <!-- 删除前提示 -->
    <page-dialog
    :show="showDialog"
    showCancel
    message="确认删除已选产品?"
    @confirm="deleteChoose"
    @close="showDialog = false"/>

或者在js中使用

        this.$pageDialog({
          message: '审核后的订单有部分发生变化,确定按调整后订单支付?',
          showCancel: true,
          cancelText: '我在想想',
        }).then(() => {
        // 搞事情
        }).catch(() => {
        // 搞事情
        });

在原型上挂载方法和组件

挂在方法,在main.js中

Vue.prototype.langs = function lang(en, id, zh) {
  const L = this.language
  switch (L) {
    case 'en':
      return en || ''
    case 'id':
      return id || ''
    case 'zh':
      return zh || ''
  }
}

使用:this.langs()

注意:

1、如当前页面中的方法与原型方法名字一致,则会覆盖原型的方法

2、如果原型方法太多写在main.js中会赘余,所以一般在另外创建一个js文件,这个js文件都是全部写原型的方法,然后引入到main.js当中,然后把它放在这个位置

new Vue({
  el: '#app',
  router,
  store,
  test, // 比如这个就是js文件,放到vue上面
  components: { App },
  template: '<App/>'
})

挂载组件

import testA from '@/A'
Vue.component('testA ', testA )

使用:<testA></testA>或者<test-a><test-a/> 

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。 

--结束END--

本文标题: vue实现自定义组件挂载原型上

本文链接: https://www.lsjlt.com/news/172174.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue实现自定义组件挂载原型上
    目录自定义组件挂载原型上以elementUI二次分装dialog举例在原型上挂载方法和组件挂在方法,在main.js中挂载组件自定义组件挂载原型上 以elementUI二次分装dia...
    99+
    2022-11-13
    vue自定义组件 vue挂载原型 vue组件挂载原型上
  • vue递归实现自定义tree组件
    本文实例为大家分享了vue递归实现自定义tree组件的具体代码,供大家参考,具体内容如下 1. 在tree/index.vue中: <template> <...
    99+
    2022-11-12
  • Vue结合原生js如何实现自定义组件自动生成
    这篇文章主要介绍Vue结合原生js如何实现自定义组件自动生成,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!就目前三大前端主流数据驱动框架(vue,ng,react)而言,均具有创建自...
    99+
    2022-10-19
  • VUE自定义取色器组件的实现
    本文主要介绍了VUE 自定义取色器组件的实现,分享给大家,具体如下: 效果: 功能: 1。点击色块中任何一点,色块中的正方形显示该点的颜色。 2。点击色块上方的颜色圆点,色块选中该...
    99+
    2022-11-12
  • Vue怎么实现自定义组件自动生成
    本文小编为大家详细介绍“Vue怎么实现自定义组件自动生成”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue怎么实现自定义组件自动生成”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。就目前三大前端主流数据驱动框架...
    99+
    2023-07-04
  • Vue自定义Form组件实现方法介绍
    目录1. 需求分析2. 表单功能的简单实现3. 抽象验证规则4. 支持 v-model 双向绑定5. 使用 $attrs 支持默认属性6. 父组件调用子组件中的方法1. 需求分析 我...
    99+
    2022-11-13
    Vue自定义Form组件 Vue Form组件 Vue Form
  • Vue + Element 自定义上传封面组件功能
    前一段时间做项目,频繁使用到上传图片组件,而且只上传一个封面,于是想着自定义一个图片封面上传组件。先来看一下效果: 第一张图片是上传之前,第二张图片是上传成功后,第3张图片是鼠...
    99+
    2023-01-10
    Vue Element 自定义上传 Vue Element 自定义组件 Vue  Element上传组件
  • Android自定义组件:2、如何实现和使用自定义组件、自定义属性
    声明:本教程不收取任何费用,欢迎转载,尊重作者劳动成果,不得用于商业用途,侵权必究!!! 目录 一、前言 二、如何实现自定义组件 步骤1:写 attrs.xml 资源文件 1、...
    99+
    2022-06-06
    属性 自定义属性 Android
  • vue自定义全局组件实现弹框案例
    本文实例为大家分享了vue自定义全局组件实现弹框案例的具体代码,供大家参考,具体内容如下 说明:本案例是封装的一个弹框页面,因为只想要一个遮罩,内容自定义。因为ElementUI上已...
    99+
    2022-11-13
  • vue如何实现自定义模态弹窗组件
    本篇内容主要讲解“vue如何实现自定义模态弹窗组件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue如何实现自定义模态弹窗组件”吧! 一、创建弹窗组件 qu...
    99+
    2022-10-19
  • Vue自定义铃声提示音组件的实现
    目录背景/前言组件的使用安装加载组件生效组件参数使用默认音效关于open参数的解释项目地址背景/前言 之前的一个功能需求,需要在页面接收消息,一旦有了新消息之后,需要用铃声进行提醒。...
    99+
    2022-11-13
  • vue自定义组件如何添加使用原生事件
    目录自定义组件如何添加使用原生事件. $emit()传递. native属性vue使用原生事件自定义组件如何添加使用原生事件 自定义组件(Components)是vue的重要知识块之...
    99+
    2022-11-13
  • vue自定义组件怎么添加使用原生事件
    今天小编给大家分享一下vue自定义组件怎么添加使用原生事件的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。自定义组件如何添加使...
    99+
    2023-06-30
  • 自定义input组件怎么实现拖拽文件上传
    这篇“自定义input组件怎么实现拖拽文件上传”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“自定义input组件怎么实现拖拽...
    99+
    2023-07-05
  • 详解Vue全局组件的挂载之实现弹窗组件
    目录vue组件挂载类型组件挂载代码示例1.vue.extend()方法2.render函数挂载vue组件挂载类型 vue中组件的挂载分为两种类型: vue.extend() rend...
    99+
    2022-11-13
    Vue组件挂载 弹窗 Vue组件挂载 Vue弹窗组件 Vue 弹窗
  • Vue实现自定义组件的方式引入图标
    这篇文章主要讲解了“Vue实现自定义组件的方式引入图标”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue实现自定义组件的方式引入图标”吧!前言在项目开发中,使用图标的方式有很多种,可以在i...
    99+
    2023-06-20
  • Vue如何实现自定义铃声提示音组件
    小编给大家分享一下Vue如何实现自定义铃声提示音组件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!组件的使用安装npm i easy-ring...
    99+
    2023-06-28
  • android自定义组件实现方法
    本文实例讲述了android自定义组件实现方法。分享给大家供大家参考。具体如下: atts.xml: <?xml version="1.0" encoding...
    99+
    2022-06-06
    方法 Android
  • 如何使用vue组件自定义v-model实现一个Tab组件
    这篇文章主要介绍如何使用vue组件自定义v-model实现一个Tab组件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!效果先让我们看一下例子的效果吧!v-model我们知道 v-mo...
    99+
    2022-10-19
  • elementui使用el-upload组件如何实现自定义上传
    目录使用el-upload组件实现自定义上传方式一:选择后自动上传方式二:选择后手动上传使用el-upload上传文件夹封装elementui el-upload文件上传组件使用el...
    99+
    2022-11-13
    elementui el-upload组件 使用el-upload组件 el-upload自定义上传
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作