С vuejs, как мне получить объект firebase (vuefire) в данные компонента

Использование firebase 4.10.1 и vuefire 1.4.5.

Я подтвердил, что инициализировал FireBase, экспортировал db const, и импортировал vuefire правильно.

Я пытаюсь загрузить свой объект Firebase (JSON) на мой dataTable данные компонента.

Я пытаюсь это:

export default {
    firebase: function () {
       return {
           fbObj: db.ref('collection')
       }
    },
    data () {
        return {
            dataTable: fbObj
        }
    }
 }

Он подключен правильно, потому что если я использую {{ fbObj }} в моем шаблоне я получаю объект JSON, отображаемый полностью. Однако, если я пытаюсь загрузить его в dataTable, я получаю "fbObj is not defined" как консольная ошибка.

Как я могу загрузить свой объект Firebase в dataTable?

1 ответ

Решение

Код:

firebase: function () {
   return {
       fbObj: db.ref('collection')
   }
},

Создает this.fbObj доступны для вашего экземпляра Vue. Так что вместо dataTable: fbObj правильный будет больше похоже на:

data () {
    return {
        dataTable: this.fbObj   // but even this won't work
    }
}

Но это не сработает. Вы не можете сделать это, потому что это data() код инициализации будет выполнен до fbObj был инициализирован (требуется некоторое время, чтобы обновить его из firebase).

Так что если вы хотите dataTable чтобы ссылаться на эту коллекцию, либо:

  • Переименуйте объект Firebase в dataTable:

    firebase: function () {
       return {
           dataTable: db.ref('collection')
       }
    },
    
  • Или создайте вычисляемое свойство:

    firebase: function () {
       return {
           fbObj: db.ref('collection')
       }
    },
    computed: {
        dataTable() {
            return this.fbObj;
        }
    }
    

Тогда вы можете использовать this.dataTable в экземпляре Vue JavaScript или dataTable в шаблоне.

Другие вопросы по тегам