前端组件业务数据选择功能优雅写法

1. 业务场景

后台管理在实际业务中,经常可见的功能为:在当前的页面中从其他列表中选择数据。

例如,在一个商品活动列表页面中 需要选择配置的商品。

2. 遇到问题

从代码划分的角度来说,每个业务列表代码首先分散开来,各自为一个文件夹。如果想在业务A中选择业务B的数据,那么常规写法为封装一个组件,然后在当前页面中引用,代码大概如下。

import DataList from '@/xxx'

<DataList />

3. 优雅写法

但是这个看起来实在繁琐,尤其在今日学习某项目学到一种写法后再看此方式这种感觉尤为强烈。

那便是将组件挂在到 Vue.property 里,直接通过 js 代码操作。

使用方代码如下:

只需要调用一个方法,并在参数写上选择后的回调函数,回调函数的参数就是选择上的数据。

4. 实现方式

4.1 定义 Vue 组件

import Element from 'element-ui'
import '@/styles/element-variables.scss'
import cardFormComponent from './index.vue'
import Vue from 'vue'
import Cookies from 'js-cookie'Vue.use(Element, {size: Cookies.get('size') || 'medium' // set element-ui default size
})
const cardFrom = {}
cardFrom.install = function(Vue, options) {const ToastConstructor = Vue.extend(cardFormComponent)// 生成一个该子类的实例const instance = new ToastConstructor()instance.$mount(document.createElement('div'))document.body.appendChild(instance.$el)Vue.prototype.$modalCard = function(callback) {instance.visible = trueinstance.callback = callback}
}
export default cardFrom

4.2 组件代码

<template><div><el-dialogtitle="优惠券列表":visible.sync="visible"width="1400px"top="30px":before-close="handleClose"><data-list v-if="visible":send="true"@getChooseCardIdList="getChooseCardIdList"/></el-dialog></div>
</template><script>
import dataList from '../index.vue'export default {name: 'CardForm',components: { dataList },data() {return {visible: false,callback: function() {}}},methods: {handleClose() {this.visible = false},getChooseCardIdList(cardIdList) {this.callback(cardIdList)this.visible = false}}
}
</script><style scoped></style>

4.3 注册Vue组件

在 main.js 配置

import cardForm from '@/views/card/card/cardForm/index.js'Vue.use(cardForm)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/21001.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode刷题之HOT100之在排序数组中查找元素的第一个和最后一个位置

下午雨变小了&#xff0c;但我并未去实验室&#xff0c;难得的一天呆在宿舍。有些无聊&#xff0c;看看这个&#xff0c;弄弄那个&#xff0c;听听歌&#xff0c;消磨时间。不知觉中时间指针蹦到了九点&#xff0c;做题啦&#xff01;朋友推荐了 Eason 的 2010-DUO 演唱会&…

2024年06月数据库流行度最新排名

点击查看最新数据库流行度最新排名&#xff08;每月更新&#xff09; 2024年06月数据库流行度最新排名 TOP DB顶级数据库索引是通过分析在谷歌上搜索数据库名称的频率来创建的 一个数据库被搜索的次数越多&#xff0c;这个数据库就被认为越受欢迎。这是一个领先指标。原始数…

低代码是什么?开发系统更有什么优势?

低代码&#xff08;Low-Code&#xff09;是一种应用开发方法&#xff0c;它采用图形化界面和预构建的模块&#xff0c;使得开发者能够通过少量的手动编程来快速创建应用程序。这种方法显著减少了传统软件开发中的手动编码量&#xff0c;提高了开发效率&#xff0c;降低了技术门…

thingsboard物联网平台快速入门教程

第一步&#xff0c;搭建服务器 使用我已经建好的服务器&#xff0c;thingsboard测试账号,租户管理员账号&#xff0c;物联网测试平台-CSDN博客 第二步&#xff0c;创建一个设备&#xff0c;获取设备Token 用租户管理员账户登录&#xff0c;左侧找到实体->设备&#xff0c…

Oracle导出clob字段到csv

使用UTL_FILE ref: How to Export The Table with a CLOB Column Into a CSV File using UTL_FILE ?(Doc ID 1967617.1) --preapre data CREATE TABLE TESTCLOB(ID NUMBER, MYCLOB1 CLOB, MYCLOB2 CLOB ); INSERT INTO TESTCLOB(ID,MYCLOB1,MYCLOB2) VALUES(1,Sample row 11…

Fiddler抓包工具的使用

目录 1、抓包原理&#xff1a;&#x1f447; 2、抓包结果&#x1f447; 1&#xff09;如何查看一个http请求的原始摸样&#xff1a; 2&#xff09;分析数据格式&#xff1a; 3、请求格式分析&#x1f447; 4、响应格式分析&#x1f447; 官网下载&#xff1a;安装过程比较…

【评价类模型】Topsis

综合赋权法&#xff1a;Topsis法&#xff1a; 主要适用情况&#xff1a;题目提供了足够的评价指标和数据&#xff0c;数据已知&#xff0c;评价指标的类型差异较大 基本思想&#xff1a;将所有方案与理想解和夫理想解进行比较&#xff0c;通过激素那方案与这两个解的举例去欸的…

深度学习复盘与论文复现B

文章目录 1、Knowledge Review1.1 NLLLoss vs CrossEntropyLoss1.2 MNIST dataset1.2.1 Repare Dataset1.2.2 Design Model1.2.3 Construct Loss and Optimizer1.2.4 Train and Test1.2.5 Training results Pytorch-Lightning MNIST :rocket::fire:1.3 Basic Convolutional Neu…

笔记:美团的测试

0.先启动appium 1.编写代码 如下&#xff1a; from appium import webdriver from appium.webdriver.extensions.android.nativekey import AndroidKeydesired_caps {platformName: Android,platformVersion: 10,deviceName: :VOG_AL10,appPackage: com.sankuai.meituan,ap…

Android关闭硬件加速对PorterDuffXfermode的影响

Android关闭硬件加速对PorterDuffXfermode的影响 跑的版本minSdk33 编译SDK34 import android.content.Context import android.graphics.Bitmap import android.graphics.Canvas import android.graphics.Color import android.graphics.Paint import android.graphics.Port…

OpenMV学习笔记3——画图函数汇总

画图&#xff0c;即在摄像头对应位置画出图形&#xff0c;对于需要反馈信息的程序来说很直观。就如上一篇文章颜色识别当中的例子一样&#xff0c;我们在识别出的色块上画出矩形方框&#xff0c;并在中间标出十字&#xff0c;可以直观的看到OpenMV现在识别出的色块。 目录 一…

执法装备管理系统DW-S304的概念与特点

执法装备管理系统&#xff08;DW-S304&#xff09;适用于多种警务和安保场景&#xff0c;如警察局、特警队、边防检查站、监狱管理系统、生态环境局、执法大队等。它可以帮助这些机构提高对装备的控制能力&#xff0c;确保装备在需要时能够迅速到位&#xff0c;同时也减少了因装…

API开发秘籍:揭秘Swagger与Spring REST Docs的文档自动化神技

在这个数字化时代&#xff0c;如何让你的业务像外卖一样快速送达顾客手中&#xff1f;本文将带你走进Spring Boot的世界&#xff0c;学习如何利用RESTful API构建一个高效、直观的“外卖帝国”。从基础的REST架构风格&#xff0c;到Spring MVC的魔力&#xff0c;再到Swagger和S…

追寻美的指引--纪念西蒙斯

周六早上醒来&#xff0c;James Simons&#xff08;西蒙斯&#xff09;辞世的消息刷屏了。多数人知道他&#xff0c;是因为他的财富和量化对冲基金公司-文艺复兴。但他更值得为人纪念的身份&#xff0c;则是数学家和慈善家。 西蒙斯1938年生于麻省&#xff0c;毕业于MIT&#…

探索 Python 的 vars() 函数

大家好&#xff0c;在软件开发的过程中&#xff0c;调试是一个不可或缺的环节。无论你是在解决 bug&#xff0c;优化代码&#xff0c;还是探索代码的执行流程&#xff0c;都需要一些有效的工具来帮助你更好地理解和调试代码。在 Python 编程中&#xff0c;vars() 函数是一个非常…

编程环境资源汇总

目录 前言 正文 虚拟机模块 常用软件模块&#xff08;同时包含各别好用的小软件&#xff09; 语言模块 尾声 &#x1f52d; Hi,I’m Pleasure1234&#x1f331; I’m currently learning Vue.js,SpringBoot,Computer Security and so on.&#x1f46f; I’m studying in Univer…

论文阅读笔记(十一)——BioInformatics Agent (BIA)

论文阅读笔记(十一)——BioInformatics Agent (BIA): Unleashing the Power of Large Language Models to Reshape Bioinformatics Workflow 目录 论文阅读笔记(十一)——BioInformatics Agent (BIA): Unleashing the Power of Large Language Models to Reshape Bioinformatic…

【C++奇妙冒险】日期类Date的实现

文章目录 前言日期类Date的接口设计构造函数和打印函数获取日期并判断日期是否合法日期类的大小比较关系<运算符重载 判断小于运算符重载 判断相等<运算符重载 判断小于等于>运算符重载 判断大于> 运算符重载 判断大于等于! 运算符重载 不等于 日期类计算日期天数日…

一维数组基础(题目+答案)

第1题 反向输出 时限&#xff1a;1s 空间&#xff1a;256m 输入n个数&#xff0c;要求程序按输入时的逆序把这n个数打印出来&#xff0c;已知整数不超过100个。也就是说&#xff0c;按输入相反顺序打印这n个数。 输入格式 第一行&#xff1a;一个整数n&#xff0c;代表…

成功解决“IndexError: pop index out of range”错误的全面指南

成功解决“IndexError: pop index out of range”错误的全面指南 引言 在Python编程中&#xff0c;处理列表&#xff08;list&#xff09;、双端队列&#xff08;deque&#xff09;或其他可迭代对象时&#xff0c;我们经常使用pop()方法来移除并返回指定索引处的元素。然而&am…