用两个button(添加,编辑)按钮展示同一个模态框,并不是什么大问题,问题在于解决这两个模态框得有自己的确定和取消方法

父页面完全接管子页面(利于子页面复用)

父页面代码:

  1. <template>
  2. <div>
      <-- 定义两个按钮,一个添加按钮, 一个编辑按钮 -->
  3. <a-button type="primary" @click="showModal">添加</a-button>
  4. <a-button type="primary" @click="showEditModal">编辑</a-button>
      <-- 引入模态框,将modal框的确定和取消方法由此元素触发调用 -->
  5. <test-add
  6. ref="collectionForm"
  7. :visible="visible"
  8. @cancel="dialogStatus==='add'?handleCancel():handleEditCancel()"
  9. @ok="dialogStatus==='add'?handleOk():handleEditOk()"
  10. />
  11. </div>
  12. </template>
  13.  
  14. <script>
  15. import TestAdd from './modules/TestAdd'
  16. export default {
  17. components: { TestAdd },
  18. data() {
  19. return {
  20. dialogStatus:'',
  21. visible: false,
  22. };
  23. },
  24. watch:{
  25. },
  26. methods: {
  27. // 处理添加方法
  28. showModal() {
  29. this.visible = true;
  30. this.dialogStatus = 'add';
  31. },
  32. handleCancel() {
  33. this.visible = false;
  34. this.dialogStatus=''
  35. console.log('add cancel')
  36. },
  37. handleOk(){
  38. console.log('add ok')
  39. },
  40. //处理编辑的方法
  41. showEditModal(){
  42. this.type = 'edit';
  43. this.visible = true;
  44. },
  45. handleEditCancel(){
  46. this.visible = false;
  47. this.dialogStatus = ''
  48. console.log('edit cancel')
  49. },
  50. handleEditOk(){
  51. this.visible = true;
  52. console.log('edit ok')
  53. }
  54. },
  55. };
  56. </script>

子页面代码:

  1. <template>
     <-- 用emit方法触发父级方法,自己本身不需要处理方法 --> 
     <-- 表单校验的时候,可以表单校验成功了之后再去触发父元素方法 -->
  2. <a-modal
  3. :visible="visible"
  4. title='Create a new collection'
  5. okText='完成'
  6. @cancel="() => { $emit('cancel') }"
  7. @ok="() => { $emit('ok') }"
  8. >
  9. <a-form layout='vertical' :form="form">
  10. <a-form-item label='Title'>
  11. <a-input v-decorator="[ 'title' ]" />
  12. </a-form-item>
  13. <a-form-item label='Description'>
  14. <a-input type='textarea' v-decorator="['description']"/>
  15. </a-form-item>
  16. <a-form-item class='collection-create-form_last-form-item'>
  17. <a-radio-group
  18. v-decorator="['modifier',{initialValue: 'private'}]">
  19. <a-radio value='public'>Public</a-radio>
  20. <a-radio value='private'>Private</a-radio>
  21. </a-radio-group>
  22. </a-form-item>
  23. </a-form>
  24. </a-modal>
  25.  
  26. </template>
  27.  
  28. <script>
  29. export default {
  30. name: 'TestAdd',
  31. props: ['visible'],
  32. data () {
  33. return {
  34. form: this.$form.createForm(this)
  35. }
  36. }
  37. }
  38. </script>
  39.  
  40. <style scoped>
  41.  
  42. </style>

使用上面这种方式,子页面基本上不需要处理什么业务逻辑,所有方法都由父页面实现,这样就可以把子页面随意引用到其他地方去使用,也是官方文档中的样例。

 

ant-design-vue中实现modal模态框的复用(添加,编辑展示同一个模态框)的更多相关文章

  1. Ant Design Pro中Transfer穿梭框的实际用法(与后端交互)

    Ant Design Pro中Transfer穿梭框的实际用法(与后端交互) 该控件的属性以及属性的作用在ADP的官方文档中都有介绍,但没有讲如何与后端交互,本文旨在讲解该控件与后端的交互. Ant ...

  2. Ant Design Vue select下拉列表设置默认值

    在项目中需要为Ant Design Vue 的 select 组件设置一个默认值,如下图所示的状态下拉选择框,默认选择全部 代码如下: <a-select v-model="query ...

  3. Ant Design框架中不同的组件访问不同的models中的数据

    Ant Design框架中不同的组件访问不同的models中的数据 本文记录了我在使用该框架的时候踩过的坑,方便以后查阅. 一.models绑定 在某个组件(控件或是页面),要想从某个models中获 ...

  4. Ant Design Vue Pro 项目实战-项目初始化(一)

    写在前面 时间真快,转眼又是新的一年.随着前后端技术的不断更新迭代,尤其是前端,在目前前后端分离开发模式这样的一个大环境下,交互性.兼容性等传统的开发模式已经显得有些吃力.之前一直用的是react,随 ...

  5. 使用ant design vue的日历组件,实现一个简单交易日与非交易日的切换

    使用ant design vue的日历组件,实现一个简单交易日与非交易日的切换 需求: 日历区分交易日.非交易日 可以切换面板查看整年交易日信息 可以在手动调整交易日.非交易日 演示实例 序--使用软 ...

  6. Vue3学习(二)之集成Ant Design Vue

    一.集成Ant Design Vue npm install ant-design-vue@2.0.0-rc.3 --save 兼容性 Ant Design Vue 2.x 支持所有的现代浏览器. 如 ...

  7. 基于Ant Design Vue封装一个表单控件

    开源代码 https://github.com/naturefwvue/nf-vue3-ant 有缺点本来是写在最后的,但是博文写的似乎有点太长了,估计大家没时间往下看,于是就把有缺点写在前面了,不喜 ...

  8. 使用npm安装 Ant Design Vue 时报错—ant-design-vue@latest(sha1-qsf / gCIFcRYxyGmOKgx7TmHf1z4 =)seems to be corrupted.

    安装 Ant Design Vue 时报错: npm install ant-design-vue --save ant-design-vue @ latest(sha1-qsf / gCIFcRYx ...

  9. Ant Design Vue项目解析-前言

    源码系列文章很长时间没有更新,一是在考虑文章用什么方式写质量会更高,用什么方式总结更易于扩展和总结知识点,加上工作.看书.健身占用的时间比较多所以也没时间去整理.最近在网上看到一篇文章感觉这种方式不错 ...

随机推荐

  1. Java8新特性之流stream

    <Java 8 实战>学习笔记系列 定义 流是Java API的新成员,它允许你以声明性方式处理数据集合,可以把它看成遍历数据集的高级迭代器 示例 List<String> t ...

  2. 关于Ubuntu系统忘记密码的解决方法合集

    昨天有台机器的Ubuntu系统密码出了问题,一直提示错误.由于里面的数据比较重要,不建议重装系统,所以百度了一会,最终解决了忘记密码问题.整理了一个大合集分享出来. 第一种:参考教程如下       ...

  3. 囚徒问题(100 prisoners problem)的python验证

    密码学课上老师介绍了这样一个问题,囚徒问题(100 prisoners problem):一百个囚徒被关在牢房里,典狱长给他们最后一次机会,100人依次进入一个有100个抽屉的牢房,每个抽屉置乱放入1 ...

  4. 看了Java的Class的源码,我自闭了

    java源码之Class ​ 源码的重要性不言而喻,虽然枯燥,但是也有拍案叫绝.这是我的源码系列第二弹,后续还会一直更新,欢迎交流.String源码可以看我的Java源码之String,如有不足,希望 ...

  5. springMVC --@RequestParam注解(后台控制器获取参数)

    在SpringMVC后台控制层获取参数的方式主要有两种,一种是request.getParameter("name"),另外一种是用注解@RequestParam直接获取. 1.获 ...

  6. 【SpringMVC】

    前言

  7. mysql错误详解(1819):ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

    O(∩_∩)O哈哈~ 在学习 Mysql 的时候又遇到了新问题了 o(╥﹏╥)o 当我在准备为用户授权的时候: grant all privileges on *.* to 'root'@'%' id ...

  8. java中的Arrays这个工具类你真的会用吗

    Java源码系列三-工具类Arrays ​ 今天分享java的源码的第三弹,Arrays这个工具类的源码.因为近期在复习数据结构,了解到Arrays里面的排序算法和二分查找等的实现,收益匪浅,决定研读 ...

  9. Python之浅谈函数

    目录 文件的高级应用 文件修改的两种方式 第一种 第二种 函数的定义 函数的参数 函数的返回值 文件的高级应用 r+即可读又可写,并且是在后面追加 w+清空文件的功能是w提供的 a+a有追加的功能,a ...

  10. 十.总结drf视图

     一.对一个资源的五个操作: 如users资源: 序列化是把模型/表中数据以json格式的数据返回给前端,反序列化是把前端通过http post提交过来的json格式数据(data)插入到数据库. 小 ...