Vue.js Nativescript VueJS-如何在axios中启用和禁用按钮

Vue.js Nativescript VueJS-如何在axios中启用和禁用按钮,vue.js,nativescript,Vue.js,Nativescript,这是我的代码: <Button text="Login" @tap="submit" class="btn btn-primary m-t-20" :isEnabled="isTappable" /> submit(event) { this.isTappable = false; let eventListener = this.isTappable; axios({

这是我的代码:

<Button text="Login" @tap="submit" class="btn btn-primary m-t-20" :isEnabled="isTappable" />


submit(event) {
                this.isTappable = false;
                let eventListener = this.isTappable;
                axios({
                    method: 'post',
                    url: '/api/authenticate/login',
                    data: {
                        username: 'test',
                        password: "12345"
                    }
                }).then(function(response){
                    eventListener = true;
                }).catch(function(error){
                    console.log(error);
                    eventListener = true;
                }).finally(function(){
                    eventListener = true;
                    console.log("eventListener: "+eventListener);
                });
            }

提交(活动){
this.isTappable=false;
让eventListener=this.isTappable;
axios({
方法:“post”,
url:“/api/authenticate/login”,
数据:{
用户名:“测试”,
密码:“12345”
}
}).然后(功能(响应){
eventListener=true;
}).catch(函数(错误){
console.log(错误);
eventListener=true;
}).最后(函数(){
eventListener=true;
log(“eventListener:+eventListener”);
});
}
我注意到按钮禁用了,但它没有启用返回。我在这里做了什么错事

谢谢。

您应该使用承诺函数(then,catch,finally)来保持引用vue对象的
this
的范围,然后在
finally
函数中,您可以使用
this
引用
isTappable
属性,应该是:

<Button text="Login" @tap="submit" class="btn btn-primary m-t-20" :isEnabled="isTappable" />


submit(event) {
  this.isTappable = false;
  let eventListener = this.isTappable;
  axios({
      method: 'post',
      url: '/api/authenticate/login',
      data: {
          username: 'test',
          password: "12345"
      }
  }).then((response) => {
      eventListener = true;
  }).catch((error) => {
      console.log(error);
      eventListener = true;
  }).finally(() => {
      this.isTappable = true;
      eventListener = true;
      console.log("eventListener: "+eventListener);
  });
}

提交(活动){
this.isTappable=false;
让eventListener=this.isTappable;
axios({
方法:“post”,
url:“/api/authenticate/login”,
数据:{
用户名:“测试”,
密码:“12345”
}
})。然后((响应)=>{
eventListener=true;
}).catch((错误)=>{
console.log(错误);
eventListener=true;
}).最后(()=>{
this.isTappable=true;
eventListener=true;
log(“eventListener:+eventListener”);
});
}

哇,这完全有效!所以一直以来我都应该使用箭头函数??哈哈!这里没有!谢谢!:)只要用例是必需的,就在
这个
的范围内思考。有时这是不必要的。