根据Vuefire 自述文件:
如果您想自动重新绑定(非常像计算属性),请使用 $watch 并调用 $unbind 然后 $bindAsArray
一旦给firebase变量分配了一个值
firebase: {
posts: firebase.database().ref('posts')
}
它的行为类似于 const。为了改变它的值,你必须先解绑它
this.$unbind('posts')
然后重新分配重新排序的帖子,例如。
this.$bindAsArray('posts', postsRef.orderByChild(this.order))
在下面的示例中,我们观察order变量,一旦它发生变化,帖子被重新分配,来自 firebase 的重新排序响应
import { postsRef } from '@/firebase' // postsRef = firebase.database().ref('posts')
export default {
data() {
return {
order: 'title' // default order
}
},
firebase: function() {
return {
posts: postsRef.orderByChild(this.order)
}
},
methods: {
setOrder(val) {
this.order = val
}
},
watch: {
order: function() {
if (this.$firebaseRefs.posts) {
this.$unbind('posts')
}
this.$bindAsArray('posts', postsRef.orderByChild(this.order))
}
}
}
PS我知道这个问题不再相关,但也许对其他人有帮助。我也遇到了这个问题,花了一段时间才明白它是如何工作的。