javascript - 单击按钮时,Vue JS 添加 bulma 类正在加载

标签 javascript vuejs2 bulma

我正在试用 bulma。我想要的是 show the loading icon over a button当它被点击时。

这是头部部分:

<head>
    <meta charset="UTF-8">
    <title>Button loading in Bulma</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.6.0/css/bulma.min.css">
</head>

这是正文代码:

<div class="container">
        <!--Vue container-->
    <div id="app">
        <div class="tile notification is-info">
            <div class="column">
                <h1>Newsletter</h1>
                <form>
                    <!-- Email -->
                    <div class="field">
                        <label class="label" for="email">Email</label>
                        <div class="control">
                            <input class="input is-small" type="email" id="email" placeholder="you@somewhere.com" autofocus>
                        </div>
                    </div>
                    <!-- Submit button -->
                    <div class="field">
                        <div class="control">
                            <button class="button is-primary" @click="loadingClass = 'is-loading'" :class="{ loadingClass }">Submit</button>
                        </div>
                    </div>
                </form>
            </div>
        </div>
    </div>

这是 vue.js 脚本

<script src="https://unpkg.com/vue"></script>
<script>
    var app = new Vue({
        el: '#app',
        data: {
            loadingClass: ''
        }
    })
</script>

我无法让它工作。我错过了什么?

解决方案:

好吧,我找到了解决方法 here in the docs , 所以我按如下方式修复了它:

表格:

<!-- Submit button -->
                        <div class="field">
                            <div class="control">
                                <button class="button is-primary" v-bind:class="{ 'is-loading' : loading }">Submit</button>
                            </div>
                        </div>

脚本:

<script>
    var app = new Vue({
        el: '#app',
        data: {
            loading: false
        }
    })
</script>

当我在控制台 app.loading=true; 中更改时,按钮会更改为“正在加载”,反之亦然 app.loading=false; 就是这样。

最佳答案

在您的 data: 中,您想要一个纯粹的页面状态描述,所以输入 clicked : false

然后在您的处理程序中,修改您的状态:@click="clicked = true"

然后在您的动态类列表中,放入 bulma 加载类。

:class="{'button':true, 'is-primary':true, 'is-active':clicked}"

这包括了吗?

关于javascript - 单击按钮时,Vue JS 添加 bulma 类正在加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47458421/

相关文章:

javascript - 允许 meiomask 时间掩码中的 : or . 符号

webpack - 在子目录中部署 VueJS App

html - 从 bool 玛末端开始包裹

java - 触发链接但不更改页面内容

javascript - 传单:removeLayer() 在 JavaScript 中只工作一次

vue.js - this.$root 在组件中是什么意思?

vue.js - Vuex 状态数组对象的计算属性

css - Bulma 导航栏有两行

css - bulma - 有效地调整排版大小

php - 如何在数据库中插入正确的值