首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使vuefire显示加载屏幕?

如何使vuefire显示加载屏幕?
EN

Stack Overflow用户
提问于 2017-08-20 14:05:39
回答 2查看 1.4K关注 0票数 3

由于标题Vuefire可以自动从防火墙数据库中获取数据,但需要一定的加载时间。因此,我想在获取数据之前显示一些css动画,当它成功时,有什么事件我可以$watch吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-21 05:19:14

你可以用多种方法。Vuefire有现成的readyCallback,当数据被获取(就绪)时,就会调用回调。

下面是:

代码语言:javascript
复制
var vm = new Vue({
  el: '#demo',
  data: function() {
    return {
       loaded: false
    }
  }
  firebase: {
    // simple syntax, bind as an array by default
    anArray: db.ref('url/to/my/collection'),
    // can also bind to a query
    // anArray: db.ref('url/to/my/collection').limitToLast(25)
    // full syntax
    anObject: {
      source: db.ref('url/to/my/object'),
      // optionally bind as an object
      asObject: true,
      // optionally provide the cancelCallback
      cancelCallback: function () {},
      // this is called once the data has been retrieved from firebase
      readyCallback: function () {
         this.loaded = true // NOTE THIS LINE
      }
    }
  }
})
票数 3
EN

Stack Overflow用户

发布于 2019-09-06 05:59:31

另一个答案中的readyCallback方法对我不起作用。我发现了一个错误document.onSnapshot is not a function

相反,当加载完成时,我使用绑定方法设置了一个标志。

代码语言:javascript
复制
<script>
    // ...

    export default {
        data() {
            return {
                data: [],
                loaded: false,
            }
        },
        mounted() {
            this.$bind('data', firebase.firestore().collection('someDocRef'))
                .then(() => this.loaded = true);
        },
    }
</script>

然后,我的模板可以有有条件地呈现的加载屏幕:

代码语言:javascript
复制
<template>
    <template v-if="!loaded">
        <p>Loading...</p>
    </template>

    <template v-if="loaded">
        <!-- Display data here -->
    </template>
</template>
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45782992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档