Javascript 如何将VueJS方法范围绑定到Firebase Promise

Javascript 如何将VueJS方法范围绑定到Firebase Promise,javascript,firebase,vue.js,firebase-authentication,Javascript,Firebase,Vue.js,Firebase Authentication,如何将VueJs方法范围绑定到返回的Firebase承诺?为了调用VueJS模式 login: function () { fireAuth.signInWithEmailAndPassword(this.signIn.email, this.signIn.password) .then(function (user) { if (!user.emailVerified) {

如何将VueJs方法范围绑定到返回的Firebase承诺?为了调用VueJS模式

   login: function () {
            fireAuth.signInWithEmailAndPassword(this.signIn.email, this.signIn.password)
                .then(function (user) {
                    if (!user.emailVerified) {
                        this.$modal.show('email_verification', {
                            text: 'Please verify your email'
                        })
                    }
                }, function (error) {
                    console.log(error.message);
                })
        }
现在,这里是错误:

TypeError:无法读取未定义的属性“$modal”


在promise回调中使用arrow函数,以便
按词汇绑定

login: function () {
            fireAuth.signInWithEmailAndPassword(this.signIn.email, this.signIn.password)
                .then( (user) => {
                    if (!user.emailVerified) {
                        this.$modal.show('email_verification', {
                            text: 'Please verify your email'
                        })
                    }
                },  (error) => {
                    console.log(error.message);
                })
        }
或者声明一个
var self
指向方法内的vue实例,并使用
self
使用vue实例,因为回调现在将在
var self
变量上有一个闭包

login: function () {
           var self = this;
            fireAuth.signInWithEmailAndPassword(this.signIn.email, this.signIn.password)
                .then(function (user) {
                    if (!user.emailVerified) {
                        self.$modal.show('email_verification', {
                            text: 'Please verify your email'
                        })
                    }
                }, function (error) {
                    console.log(error.message);
                })
        }