如何使用 Vue.js 显示和隐藏引导微调器?

Posted

技术标签:

【中文标题】如何使用 Vue.js 显示和隐藏引导微调器?【英文标题】:How can i show and hide a bootstrap spinner with Vue.js? 【发布时间】:2021-07-06 13:10:12 【问题描述】:
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModal" v-on:click="api">
  ...
</button>

<div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
  ...
</div>

我想在单击按钮时在按钮上显示微调器。

当api返回结果时,同时弹出modal和隐藏spinner。

用jQuery实现似乎比较容易,作为vue.js的初学者,写这段代码时不知所措

【问题讨论】:

【参考方案1】:

使用 v-show 很容易。这允许您绑定到变量并控制标签是否可见。如果变量为真,则显示元素,如果为假,则隐藏元素。你可以了解更多关于v-show from the docs的信息。

因此,在您的按钮中,我们需要创建一个标签来包装按钮文本。在这种情况下,我们将使用&lt;span&gt;。然后我们将创建一个带有纯引导的微调器:

<div v-show="loading" class="spinner-border spinner-border-sm" role="status">
    <span class="sr-only">Loading...</span>
</div>

现在我们创建您的按钮

<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModal" v-on:click="API">
      <span v-show="!loading"> Button Text  </span>
      <!-- IF YOU ARE USING VUE BOOTSTRAP USE <b-spinner label="Loading..."></b-spinner> -->
      <div v-show="loading" class="spinner-border spinner-border-sm" role="status">
          <span class="sr-only">Loading...</span>
      </div>
</button>

接下来在您的代码中,您需要创建一个加载变量

data()
  return 
     ...
     loading:false,
     ...
  

然后,当您处理请求时,您需要控制加载变量。

methods:
  API()
    this.loading = true;
    axios.get("/test").then((res)=>
        this.loading=false;
    ).catch((error)=>
        console.log(error);
        this.loading=false;
    );
  

Code SandBox example

【讨论】:

以上是关于如何使用 Vue.js 显示和隐藏引导微调器?的主要内容,如果未能解决你的问题,请参考以下文章

如何显示具有隐藏值的微调器

每当我选择微调器值时如何隐藏标签?

Swift TableView Cell - 显示活动微调器,执行功能,隐藏活动微调器

如何在 v-data-table Vue.js + Vuetify 中显示和隐藏行

如何显示和隐藏在 vue js 中动态创建的 div(多格式选项卡结构)

VUE JS - 默认情况下如何隐藏 div?如果用户点击按钮,那么它应该使用 vue 显示