我正在调用一个端点来返回一个对象,它确实获取了数据,但是速度不够快,组件无法获取数据并呈现。相反,组件在应该有数据的地方呈现为空值。
如果我在创建时中断代码,然后在一秒钟后继续,文本将正确呈现。
如何实现在数据返回之前不进行渲染?
我的API调用:
checkScenarioType: function () {
this.$http.get('ScenariosVue/GetScenarioTypeFromParticipant/' + this.ParticipantId).then(response => {
// get body data
this.ScenarioType = response.body.value;
if (this.ScenarioType.timeConstraint) {
store.commit('switchConstraint');
}
}, response => {
// error callback
});
}
存在问题的组件:
var questionArea = Vue.component('questionarea', {
props: ["scenariotype"],
data: function () {
return ({
position: "",
vehicleType: ""
});
},
methods: {
transformValuesForDisplay: function () {
switch (this.scenariotype.perspective) {
case 1: {
this.position = "Driver";
this.vehicleType = "Autonomous";
break;
}
case 2: {
this.position = "Passenger";
this.vehicleType = "Manually Driven";
break;
}
case 3: {
this.position = "Driver";
this.vehicleType = "Manually Driven";
break;
}
}
}
},
beforeMount() {
this.transformValuesForDisplay();
},
template:
`<h1>You are the {{ this.position }}! What should the {{ this.vehicleType }} car do?</h1>`
});
1条答案
按热度按时间cczfrluj1#
在异步加载数据的情况下,我们通常使用一个简单的
v-if
来隐藏元素,直到数据出现。模板如下所示:
请注意,模板中不需要使用
this
。此外,在您的示例中,您将向prop添加一个(deep/immediate)watch,而不是
beforeMount()
钩子,以便在从外部加载prop时获取更改:完整演示如下。
第一次