javascript - 同一页面中多个组件的 Vue JS Spinner(单个应用程序)

标签 javascript vue.js

这是我的 Vue.js 应用程序。 要求是在每个组件的主体内加载一个单独的微调器。现在它加载整个应用程序。任何其他微调器插件也是可以接受的。

这是CDN

<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/vue@2.5/dist/vue.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue-loading-overlay@3"></script>
<link href="https://cdn.jsdelivr.net/npm/vue-loading-overlay@3/dist/vue-loading.css" rel="stylesheet">

HTML 如下

 <main id="app">
        <div class="clearfix" style="width:200px;height: 200px; border:1px solid; border-color: #ff0000">
            cgg <comp1-loading><loading :active.sync="visible" :can-cancel="true"></loading></comp1-loading>gg
        </div>

        <div class="clearfix" style="width:200px;height: 200px; border:1px solid; border-color: #ff0000">
        cgg <comp1-loading><loading :active.sync="visible" :can-cancel="true"></loading></comp1-loading>gg

        </div>

        <h1>Vue Loading Overlay demo</h1>
        <button @click.prevent="open()">Programmatic show</button>
        <button @click.prevent="show()">Component show, cancellable</button>
        <hr>
    </main>

Vue.js 应用程序组件就在这里。同一个应用中有 2 个组件,所以我想分别加载每个组件。

<script>
    Vue.use(VueLoading);
    Vue.component('comp1-loading', {
      data: function () {
        return {
          loading: true,
          dataList:[],
          something: false,
          message:"fgd"
        }
      },
      mounted(){
        this.fetchData();
        let loader = this.$loading.show({
                    loader: 'dots'
                });
                    setTimeout(() => loader.hide(), 3 * 1000)

      },
      methods:{
        fetchData:function(){
            var vm=this;
            vm.message="Hai this is spinner div";
        },
        serverDateFormat: function(date) {
        }
      },
      template: `<div >{{message}}</div>`
    })

    Vue.component('comp2-loading', {
      data: function () {
        return {
          loading: true,
          dataList:[],
          something: false,
          message:"fgd"
        }
      },
      mounted(){
        this.fetchData();
        let loader = this.$loading.show({
                    loader: 'dots'
                });
                    setTimeout(() => loader.hide(), 2 * 1000)

      },
      methods:{
        fetchData:function(){
            var vm=this;
            vm.message="Hai cthis is spinner div";
        },
        serverDateFormat: function(date) {
        }
      },
      template: `<div >{{message}}</div>`
    })

    Vue.use(VueLoading);
    let app = new Vue({
        el: '#app',
        data() {
            return {
                visible: true
            }
        },
        components: {
            Loading: VueLoading
        },
        methods: {
            open() {
                console.log('open was clicked, will auto hide');
                let loader = this.$loading.show({
                    loader: 'dots'
                });
                setTimeout(() => loader.hide(), 3 * 1000)
            },
            show() {
                console.log('show was clicked, click to hide');
                // do AJAX here
                this.visible = true
            }
        }
    });

    </script>

最佳答案

您可能想查看 vue-wait .与 Vue 一起工作,如果你不得不使用它,可以选择与 Vuex 一起使用..

vue-wait helps to manage multiple loading states on the page without any conflict. It's based on a very simple idea that manages an array (or Vuex store optionally) with multiple loading states. The built-in loader component listens to its registered loader and immediately becomes a loading state.

他们也有一个不错的Medium post关于它。

关于javascript - 同一页面中多个组件的 Vue JS Spinner(单个应用程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52945912/

相关文章:

javascript - 在javascript中增加/减少超过步进器的功能

javascript - 无法在 Vue.js + webpack 中动态传递 imgs 的相对 src 路径

javascript - Vue将input[type=number]转换为字符串值

javascript - 过滤数组并匹配至少一个条件

vue.js - inertiaJS如何与quasar框架集成?

javascript - 带有 REST API 的 Ajax 请求 header

javascript - 在网络浏览器上显示 DirectX .x 文件或转换为 .obj 文件

javascript - 如何在 typescript 中输入 promise 的回调?

javascript - Rails 在 Bootstrap 4 模态中执行 Javascript

vue.js - 如何在 Vue.js 中获取点击元素的父元素