如何让 vuefire 显示加载屏幕?
How can I make vuefire show loading screen?
如题
Vuefire 可以自动从 firebase 数据库中获取数据,但需要一些加载时间。
所以我想在获取数据之前显示一些 css 动画,有没有什么事件可以在它成功时 $watch
您可以通过多种方式执行此操作。
Vuefire
有 readyCallback
开箱即用,它是在获取数据(就绪)时调用的回调。
这里是:
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
}
}
}
})
另一个答案中的 readyCallback
方法对我不起作用。我收到一个错误 document.onSnapshot is not a function
。
相反,我使用 binding approach 在加载完成时设置一个标志。
<script>
// ...
export default {
data() {
return {
data: [],
loaded: false,
}
},
mounted() {
this.$bind('data', firebase.firestore().collection('someDocRef'))
.then(() => this.loaded = true);
},
}
</script>
然后我的模板可以有条件地呈现加载屏幕:
<template>
<template v-if="!loaded">
<p>Loading...</p>
</template>
<template v-if="loaded">
<!-- Display data here -->
</template>
</template>
如题 Vuefire 可以自动从 firebase 数据库中获取数据,但需要一些加载时间。 所以我想在获取数据之前显示一些 css 动画,有没有什么事件可以在它成功时 $watch
您可以通过多种方式执行此操作。
Vuefire
有 readyCallback
开箱即用,它是在获取数据(就绪)时调用的回调。
这里是:
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
}
}
}
})
另一个答案中的 readyCallback
方法对我不起作用。我收到一个错误 document.onSnapshot is not a function
。
相反,我使用 binding approach 在加载完成时设置一个标志。
<script>
// ...
export default {
data() {
return {
data: [],
loaded: false,
}
},
mounted() {
this.$bind('data', firebase.firestore().collection('someDocRef'))
.then(() => this.loaded = true);
},
}
</script>
然后我的模板可以有条件地呈现加载屏幕:
<template>
<template v-if="!loaded">
<p>Loading...</p>
</template>
<template v-if="loaded">
<!-- Display data here -->
</template>
</template>