我有这个代码
(请注意HTML类'symbolTicket“')
<template>
<div class="chart">
<span class="symbolTicket">
{{getTicket()}}
</span>
<div class="chartContent">
</div>
<!-- <div class="chartContent"> end -->
</div>
<!-- <div class="chart"> end -->
</template>
<script>
import axios from 'axios';
export default{
data() {
return {
};
},
methods: {
getTicket: function () {
return axios.get("http://localhost:2000/" , {
params: {
foo: 'SELECT * FROM eur_usd WHERE primary_key = 2;'
}
})
.then(function (response) {
console.log(response.data.ticket);
return response.data.ticket;
})
.catch(function (error) {
console.log(error);
});
},
},
}
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
我需要以某种方式从查询中获取值。
附言当前解决方案的结果可以在屏幕上看到。
从顶部可以看到返回的值。 (对象而不是数据)
从控制台日志的底部-我们看到答案本身正在起作用(没有错误。)
该数据需要在标签内显示。
最佳答案
执行此操作的标准方法是在模板中显示data
属性。
<span class="symbolTicket">
{{ ticket }}
</span>
data () {
return {
ticket: null
}
}
然后从
created
钩子加载值:created () {
this.getTicket()
},
methods: {
getTicket () {
return axios.get("http://localhost:2000/" , {
params: {
foo: 'SELECT * FROM eur_usd WHERE primary_key = 2;'
}
})
.then(response => {
const ticket = response.data.ticket;
// Update the data property
this.ticket = ticket;
console.log(ticket);
return ticket;
})
.catch(function (error) {
console.log(error);
});
}
}
方法
getTicket
向服务器发出异步请求,因此它无法直接返回ticket
。它所能返回的就是相应的承诺。模板同步需要该值,因此无法依赖getTicket
的返回值。您可能还需要处理
ticket
为null
的情况。在初始呈现期间,对服务器的请求不会完成,因此ticket
仍为null
。如果您对使用
async
/ await
感到满意,则可以简化getTicket
方法,但不会改变上述总体流程。您仍然需要一个单独的data
属性来保存结果。