无法通过方法中的函数访问数据变量

时间:2019-03-18 15:22:00

标签: firebase vue.js

我正在尝试从方法函数内部的函数访问名为data variable的{​​{1}}。但是据错误消息所知,我认为它无法从localUser访问localUser

这是我收到的错误消息:

  

未捕获(承诺)TypeError:无法在auth.js:1361的eval(Form.vue?c13f:100)处设置未定义的属性'localUser'

我用以下注释标记了代码中的问题所在:

  

//错误-无法访问this.localUser

我尝试过的事情:

  1. 使用data
  2. 将其插入this.$data.localUser函数之后的.then函数中,如下面的代码所示,该函数实际上是有效的,但我无法使用firebase.auth().onAuthStateChanged( (user) => {}来做到这一点,我必须在以下位置进行操作:

    firebase.auth()。onAuthStateChanged((用户)=> {}

.then

我使用的代码所在的问题出在第96行:

firebase.auth().createUserWithEmailAndPassword(this.email, this.password).catch(function(error) {
      // Handle Errors here.
      var errorCode = error.code;
      var errorMessage = error.message;
      console.log(errorMessage);
      }).then(() => {
        firebase.auth().onAuthStateChanged( (user) => {
          if (user) {
            // If already signed in
            const db = firebase.firestore();
            this.localUser = user;
            console.log(this.localUser);
            db.collection("users").doc(this.localUser.uid).set({
                firstName: this.firstName,
                lastName: this.lastName,
                student: this.student,
                teacher: this.teacher,
                email: this.email,
                password: this.password
            })
            .then(function() {
                console.log("Document successfully written!");
            })
            .catch(function(error) {
                console.error("Error writing document: ", error);
            });
          }
        })
      })

1 个答案:

答案 0 :(得分:0)

我不明白您为什么要在错误处理程序中执行所有代码(至少显示的所有代码),但是您无法访问Vue上下文的原因是错误处理程序[为了清晰起见而重新格式化] :

firebase.auth()
    .createUserWithEmailAndPassword(this.email, this.password)
        .catch(function(error) {
            // all your code is here
        })

您可以通过将其更改为箭头功能来使上下文匹配:

firebase.auth()
    .createUserWithEmailAndPassword(this.email, this.password)
        .catch((error) => {
            // all your code is here
        })