Vue中的编程方式渲染多个模态框在同一组件中
P粉627027031
P粉627027031 2023-08-28 16:23:40
[Vue.js讨论组]
<p>在我的组件中,有三个带有不同内容的弹出模态框。通过点击特定按钮,我需要打开相应的弹出模态框。</p> <p>这是我正在做的事情 <strong>对于按钮1 -</strong></p> <pre class="brush:php;toolbar:false;">&lt;s-button type=&quot;button&quot; class=&quot;bl_btn&quot; @click=&quot;onClickProdOpen&quot;&gt; 产品详情 &lt;/s-button&gt;</pre> <p><strong>对于这个模态框1将是</strong></p> <pre class="brush:php;toolbar:false;">&lt;s-modal v-model=&quot;isShowPopup1&quot; :title=&quot;$t('LBL_PROD_CONT')&quot; &lt;my-component-one :pageId =&quot;this.$options.name&quot; :popupDefaultTab=&quot;popupOpenDefaultTab&quot; :onClickClose=&quot;onClickclose&quot; /&gt;</pre> <p><strong>这里是一个按钮点击方法。像这样多个不同模态框的点击事件。</strong></p> <pre class="brush:php;toolbar:false;">methods: { onClickProdOpen() { this.isShowPopup1 = true; this.popupOpenDefaultTab = 0; } }</pre> <p>&lt;s-modal是自定义模态框部分,内容将会有所不同。所以,我重复了这个模态框代码,只是改变了内容,即传递了不同的子组件(MyComponentOne,MyComponentTwo...)。</p> <p>那么,如何使用switch case语句来避免多次重复模态框代码,只需更改内部内容组件?任何建议都会有帮助。</p>
P粉627027031
P粉627027031

全部回复(1)
P粉256487077

一种选择是将每个模态框的状态放在一个对象中。这样,你就不需要为每个模态框添加一个数据属性。

如果模态框内的内容足够相似,你可以使用v-for,以相同的方式使用索引作为键。

<b-modal v-model="modal_states[1]">模态框1</b-modal>
    <b-button @click="openModal(1)">打开1</b-button>
    
    <b-modal v-model="modal_states[2]">模态框2</b-modal>
    <b-button @click="openModal(2)">打开2</b-button>
    
    <b-modal v-model="modal_states[3]">模态框3</b-modal>
    <b-button @click="openModal(3)">打开3</b-button>
data: {
    modal_states: {},
  },
  methods: {
    openModal(index){
      this.modal_states = {[index.toString()]:true}
    }
  },

https://codepen.io/timfranklin/pen/abWEwLy?editors=1111

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号