在firebase中调用'this'一次功能

Jan*_*sen 1 javascript firebase vue.js firebase-realtime-database vue-component

所以我正在创建一个Vuejs应用程序,我正在尝试在组件安装上获取firebase数据.这是有效的,但我尝试将值写入vuejs数据属性.为此,我只会this.property = snapshot.val();在firebase函数内部调用(参见下面的代码),但这不起作用:this is undefined

所以我的代码就是:

export default {
  data() {
    return {
      imageList: "No images!"
    }
  },
  mounted() {
    if (!firebase.apps.length) {
      // Initialize Firebase
      var config = {
        ...
      };

      firebase.initializeApp(config);

      var database = firebase.database();
      var ref = database.ref("images").orderByChild("date");


    firebase.database().ref("images/").once('value').then(function(snapshot) {
        this.imageList= snapshot.val();
      });
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我尝试this.imageList= snapshot.val();使用变量来调用函数外部以存储值,并且'this'不再是未定义的,但数据不存在,因为请求尚未完成.

所以基本上我想得到snapshot.val(); 进入this.imageList!

提前致谢.

Eth*_*alm 10

您可以使用es6箭头函数语法来解决问题.

firebase.database().ref("images/").once('value').then((snapshot) => {
    this.imageList= snapshot.val();
});
Run Code Online (Sandbox Code Playgroud)

或将其绑定到函数的上下文.

var that = this;
Run Code Online (Sandbox Code Playgroud)