【问题标题】:How to show fresh bootstrap modal data when using Vue.js使用 Vue.js 时如何显示新的引导模式数据
【发布时间】:2018-10-21 08:27:16
【问题描述】:

我有一张关于我们的客户(即客户)的记录表。当用户单击它们时,它会加载一个引导模式,该模式在表单中包含客户的详细信息。然后用户可以编辑并提交表单。

表格是一个Vue组件输出的,modal是一个子Vue组件。当用户单击第一条记录时,它会填充模式并显示它,这很好。问题是当用户关闭模态框并单击另一条记录时,模态框会打开第一条记录中的数据。

我找到了解决这个问题的方法,如下面的代码所示,但它依赖于捕获引导程序“显示模式”事件。 Vue 有没有更简洁的方法呢?在父组件中选择记录时重置子组件中的数据的东西?

    export default {
    props : [
        'client_id',
        'name',
        'job_code',
        'is_default'
    ],
    data() {
        return {
            localJobCode : '',
            localIsDefault : ''
        }
    },
    methods : {
        doSave() {
             // ....
        }
    },
    mounted() {
        let self = this;
        $(this.$refs.EditClientModal).on('show.bs.modal', function () {
            self.localJobCode = self.job_code;
            self.localIsDefault = self.is_default;
        });
    }
}

模板I中modal元素有一个ref标签,如下:

<div class="modal fade" id="edit-client-modal" tabindex="-1" ref="EditClientModal">

如您所见,我正在创建道具的本地副本(因为显然我不想改变孩子的价值)。 mounted() 方法中的代码是每次显示模态时我可以看到刷新数据的唯一方法。我错过了什么吗?

【问题讨论】:

  • 我的想法,对于模态组件,它只需要关注模型布局/效果,它并不关心它的模型听觉/身体的内容。所以使用&lt;slot&gt; 将标题/正文传递给模型,使用props=@actions 传递save/cancel 事件。然后,当用户单击表格的一行时,使用填充了基于所选行生成的内容的标题/正文打开模型。

标签: twitter-bootstrap vue.js bootstrap-modal


【解决方案1】:

您可以将模态组件包装在一个 div 中并绑定一个唯一键。当关键更改组件将重新创建时

<div class="modal-wrapper" :key="client_id">
  <div class="modal fade" id="edit-client-modal" tabindex="-1" ref="EditClientModal">
  </div>
</div>

【讨论】:

  • 谢谢,这是一个有趣的想法。我试试看。
  • @KimPrince 您可以在计算中使用计算而不是数据,例如computed: { computedJobCode: function () { return this.job_code ? this.job_code : 'defaultValue'}}
猜你喜欢
  • 2020-09-11
  • 2021-08-29
  • 1970-01-01
  • 2013-09-30
  • 1970-01-01
  • 1970-01-01
  • 2018-09-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多