【问题标题】:Vue & Quasar - Sharing a custom dialog componentVue & Quasar - 共享自定义对话框组件
【发布时间】:2020-04-25 02:08:03
【问题描述】:

我查看了Reuse Quasar Dialog plugin with custom component on another component,它没有任何答案,我也有接近相同的问题,但我的结构化代码有点不同。在我的父母表格上,我有

        <q-dialog prevent-close v-model="showProfileForm" class="profileDialog">
        <profile-dialog></profile-dialog>
        </q-dialog> 

我的个人资料对话框是一个简单模板的表单

         <template> 
            <q-stepper

似乎如果我将组件包装在父页面上,对话框将打开但我无法传入

      prevent-close 

或添加一个

       @hide

我需要知道对话框表单何时关闭以保存更改或防止关闭,除非单击按钮。即使在父级中添加防止关闭也不起作用

   <q-dialog prevent-close v-model="showProfileForm" class="profileDialog">
   <profile-dialog></profile-dialog>
   </q-dialog> 

如果我在 q-dialog 中创建表单,它会变成对话框中的对话框,并在关闭父表单时将 v-modal 设置为 true,直到单击页面和表单之前仍然有轻微的灰色覆盖不会再开第二次了

【问题讨论】:

    标签: javascript vue.js quasar-framework


    【解决方案1】:

    您可以在配置文件对话框中使用emit 事件来传递事件,以便您知道是否已提交表单并使用持久性,以便用户在单击对话框外部或按 ESC 键时无法关闭对话框;此外,应用程序路由更改不会关闭它。

       <q-btn v-if="step == 4" @click="FinishClick" color="primary" label="Finish"/>
    
    
    
        methods: {
            FinishClick() {
                alert("Finish Click From Profile Dialog");
                this.$emit("profile_dialog_emmit",{'MSG':'TestData'})
            }
        }
    
      <profile-dialog @profile_dialog_emmit="my_fun($event)"></profile-dialog>
    

    在父组件中。

    methods:{
        my_fun(data){
            console.log("Assad");
            alert("From Index Check Console for Data");
            console.log(data)
            this.showProfileForm=false;
        }
      }
    

    演示 - https://codesandbox.io/s/clever-kilby-qf1gz

    转到最后一步,点击完成将触发事件,您可以看到来自父组件的警报,并检查控制台是否有从父组件显示的数据。

    【讨论】:

    • 我真正需要做的似乎是用你的信息将防止关闭更改为持久,我得到了我需要的东西。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    • 2020-08-20
    • 1970-01-01
    • 2017-02-16
    相关资源
    最近更新 更多