gpt4 book ai didi

javascript - 从获取返回值更新 vuejs 警报组件

转载 作者:行者123 更新时间:2023-11-30 13:54:28 26 4
gpt4 key购买 nike

我在更新 vuetify 中的文本时遇到困难 v-alert .

我有一个函数可以登录系统并返回一个 sessionid我遇到的问题是,在下面的代码 sessionID.then() 中,vue 组件属性未定义或无法更新。

Vue.component('query-status', {
template: `
<div>
<v-alert :type="type">
{{ alertText }}
</v-alert>
</div>`,
data() {
return {
alertText: '',
type: 'success'
}
},
methods: {
checkQueryStatus: function() {
var sessionID = login();
sessionID.then(function(result) {
this.alertText = result;
});
}
}
});

我不明白我在这里做错了什么,为什么 sessionID.then block 无法访问 alertText 属性?

最佳答案

您没有绑定(bind) this 指针,内部函数将无法访问它。

您可以通过使用局部变量来解决此问题:

checkQueryStatus : function() {              
var sessionID = login();
var that = this;
sessionID.then(function(result) {
that.alertText = result;
});
}

或者使用 es6 arrow function:

checkQueryStatus : function() {              
var sessionID = login();
sessionID.then(result => {
this.alertText = result;
});
}

或将 this 指针与 Function.prototype.bind 绑定(bind):

checkQueryStatus : function() {              
var sessionID = login();
sessionID.then(function(result) {
this.alertText = result;
}.bind(this));
}

作为替代方案,您还可以使用 async / await为此:

methods: {
async checkQueryStatus() {
this.alertText = await login();
}
}

关于javascript - 从获取返回值更新 vuejs 警报组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57576548/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com