Buefy/BoostrapVue 命名空间冲突

Posted

技术标签:

【中文标题】Buefy/BoostrapVue 命名空间冲突【英文标题】:Buefy/BoostrapVue namespace conflict 【发布时间】:2019-04-08 13:15:42 【问题描述】:

我正在尝试使用 BootrapVue 同时使用 buefy 的 b-table 组件。我猜 BootstrapVue 也有一个名为 b-table 的组件,这会导致冲突并导致 buefy 的表无法正常工作。当我删除 BootstrapVue 时,Buefy 表正确显示。我是 vue 的新手,我不确定如何解决这样的命名空间冲突,或者是否有可能。

ma​​in.js

import BootstrapVue from 'bootstrap-vue';
Vue.use(BootstrapVue);

import Buefy from 'buefy';
import 'buefy/dist/buefy.css';
Vue.use(Buefy)

MetadataTable.js

<template>
  <div>
    <!-- BootstrapVue -->
    <b-modal id="metadata-modal" title="Metadata" size="lg">
      <p class="my-4">
        <table style="text-align:left">
          <tbody>
            <tr v-for="(value,key) in current_metadata">
              <td style="vertical-align:top;font-weight:bold;">key&nbsp</td>
              <td><code><pre>JSON.stringify(value, null, 2)</pre></code></td>
            </tr>
          </tbody>
        </table>
      </p>
    </b-modal>
    <!-- Buefy -->
    <b-table
        :data="data"
        paginated
    >
      <template slot-scope="props">
          <b-table-column field="metadata.title" label="Title" sortable>
               props.row.metadata.title 
          </b-table-column>
      </template>
    </b-table>
  </div>
</template>

【问题讨论】:

【参考方案1】:

您只能从 BootstrapVue 导入项目所需的特定模块,而不是导入所有 bootstrap-vue 组件:

import bModal from 'bootstrap-vue'
import bAlert from 'bootstrap-vue'
Vue.component('b-modal', bModal)
Vue.component('b-alert', bAlert)

希望它能解决 b-table 冲突。

【讨论】:

以上是关于Buefy/BoostrapVue 命名空间冲突的主要内容,如果未能解决你的问题,请参考以下文章

Atitit xml命名空间机制

C++ 中命名空间的 5 个常见用法

XML名命空间

如何避免javascript命名空间冲突?

命名空间内部错误中的定义 _bounces 存在冲突

什么是程序冲突?/命名空间可以防止冲突吗?