模态仅在第二次单击后显示

Posted

技术标签:

【中文标题】模态仅在第二次单击后显示【英文标题】:Modal only showing after the second click 【发布时间】:2018-04-29 22:39:39 【问题描述】:

我正在 vue2 中开发 1 个组件 = 1 个文件样式。

我有一个通过 Bootstrap-Vue 表格组件构建的表格,我正在使用提供程序向它传递一个项目。

其中一列包含每一行的修改按钮。

这些按钮触发引导模式。

我正在使用 V-if 来初始化表及其属性。

<b-modal  v-if='toShow' id="modalallergy" @hide="resetModal">
      <h4 class="my-1 py-1" slot="modal-header">Allergie  modalDetails._id </h4>
      <b-container class="bv-example-row">
            <b-row>
                <b-col>
                  identifiant : modalDetails.data.content
                </b-col>
                <b-col>
                Catégorie : modalDetails.data.content
                </b-col>
            </b-row>
            </b-container>
    </b-modal>

    <b-modal id="modalallergy-edit" @hide="resetModal">
      <h4 class="my-1 py-1" slot="modal-header">Edition de l'allergie  modalDetails._id </h4>
      <pre> modalDetails.data</pre>
    </b-modal>

这是我的模式,就在上面我有我的按钮:

<button class="btn btn-xs btn-success" @click.stop="details(row.item,row.index,$event.target)">
        <span class="glyphicon glyphicon-search"></span>
      </button>

&lt;script&gt;methods 部分下面我有我的电话:

details (item, index, button) 
  this.modalDetails.data = item
  this.modalDetails.index = index
  this.modalDetails._id = item.content._id
  this.$root.$emit('bv::show::modal', 'modalallergy', button)

问题是只有第二次点击按钮才会触发模态打开。 (表格的属性还没有水合 - 至少从按钮和模态的角度来看还没有。)

我也尝试使用布尔值并手动传递参数,但在这种情况下它根本不会打开。

【问题讨论】:

你为什么打电话给@click.stop?我认为您不必担心您所描述的组件的传播。 只是想办法解决它。它没有用。 您能否在问题中包括vue 内容中methods 部分之前的其他内容?会有帮助的 【参考方案1】:

您可以使用延迟来解决一些问题。

this.myVar = someThing;
setTimeout(function() 
  $('#mymodal').modal('show');
, 100);

【讨论】:

【参考方案2】:

你应该已经解决了这个问题,但对于未来的尝试,这是我的意见。我有一个类似的问题。在我的情况下,问题是用于初始化模态内组件的 v-if。我相信如果您将 v-if 更改为 h4 和 b-container 标签会起作用。

【讨论】:

【参考方案3】:

查看您的代码,我不确定,但您可以尝试

details (item, index, button) 
  this.modalDetails.data = item
  this.modalDetails.index = index
  this.modalDetails._id = item.content._id
  this.$root.$emit('bv::show::modal', 'modalallergy', button)
  this.$root.$emit('bv::show::modal', 'modalallergy', button)

【讨论】:

我将其标记为答案,因为我不希望一半或全部分数消失,但这并没有解决我的问题。【参考方案4】:

你能用v-on:click="details(row.item,row.index,$event.target)" 代替@click.stop="details(row.item,row.index,$event.target)" 吗?或者我得到的一切都非常糟糕:)

【讨论】:

以上是关于模态仅在第二次单击后显示的主要内容,如果未能解决你的问题,请参考以下文章

在引导模式 ONCLICK 事件中显示动态内容

模态弹出窗口上的“发送”按钮第一次不起作用c#

SQL Reporting Services报告仅在第二次单击时加载

UIView 仅在第二次调用后显示

React Leaflet Routing Machine:onClick to add Marker after all the waypoints are removed仅在第二次单击后触发

UseState 仅在第二次单击时显示