nuxt2-vue2:通过编程方式调用对话框 el-dialog

打印 上一主题 下一主题

主题 987|帖子 987|积分 2961

一、背景

1.1、需求

项目:nuxt2 + vue2
希望通过编程方式的调用打开对话框,展现我们想要的内容。
1.2、效果


二、代码

2.1、插件 plugins/dialog.js

  1. import Vue from 'vue';
  2. import { Dialog } from 'element-ui';
  3. // 本文使用了Dialog组件,也可以使用自己开发的组件,这样就更加灵活了,根据自己的项目实际需要来定
  4. export default function programmingMethodToCallComponents(context, inject) {
  5.   // context:Nuxt.js 提供的上下文对象,包括 $axios(用于 HTTP 请求)、store(Vuex 状态管理)
  6.   // inject:用于将某些功能注入到全局上下文
  7.   const { $axios, store, route } = context;
  8.   const initInstance = (text, component, options = {}) => {
  9.     const { attrs, ...otherOptions } = options;
  10.     const instance = new Vue({
  11.       router: store.$router,
  12.       $axios,
  13.       store,
  14.       components: { CurrentComponent: component },
  15.       data() {
  16.         return {
  17.           dialogVisible: false,
  18.         };
  19.       },
  20.       methods: {
  21.         open() {
  22.           this.dialogVisible = true;
  23.         },
  24.       },
  25.       render() {
  26.         return (
  27.           <Dialog
  28.             ref="dialog"
  29.             title="提示"
  30.             visible={this.dialogVisible}
  31.             attrs={otherOptions}
  32.           >
  33.             <div>{{ text }}</div>
  34.           </Dialog>
  35.         );
  36.       },
  37.     });
  38.     instance.$mount();
  39.     document.body.appendChild(instance.$el);
  40.     return instance.open();
  41.   };
  42.   inject('dialog', initInstance);
  43. }
复制代码
2.2、页面利用 pages/dialog.vue

  1. <template>
  2.   <div>
  3.     <div @click="programmingMethodToCallComponents">dialog</div>
  4.   </div>
  5. </template>
  6. <script>
  7. export default {
  8.   components: {},
  9.   data() {
  10.     return {};
  11.   },
  12.   mounted() {},
  13.   methods: {
  14.     programmingMethodToCallComponents() {
  15.       this.$dialog('我是dialog')
  16.     },
  17.   },
  18. };
  19. </script>
  20. <style lang="less" scoped>
  21. </style>
复制代码
 2.3、nuxt.config.js
  1. plugins: [
  2.     {
  3.         src: '../plugins/dialog'
  4.     }
  5. ]
复制代码
三、欢迎交换指正


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

半亩花草

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表