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

tat*_*tsu 10 modal-dialog bootstrap-modal bootstrap-4 vue-component vuejs2

我正在开发vue2中的1 component = 1文件样式.

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

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

这些按钮触发bootstrap-modal.

我正在使用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>
Run Code Online (Sandbox Code Playgroud)

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

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

和以下<script>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)
}
Run Code Online (Sandbox Code Playgroud)

问题是只有第二次点击按钮才会触发模态打开.(表的属性尚未保湿 - 至少从按钮和模态的角度来看不是这样.)

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

小智 6

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