Запустив следующий код (компонент Vue.js), я ожидаю, что после возврата вызова AJAX и директива v-html
, и console.log()
отобразят одно и то же значение.
Нанапротив, v-html
застрял с «loading ... (1)», хотя obj.html
имеет другое значение, как подтверждает console.log()
.
Поведение вызвано getObject
перезаписью obj
и быть потом obj.html
неопределенным в течение короткого времени, прежде чем getHTML
вернется (все это происходит в функции created
).
Может кто-нибудь объяснить, является ли это желаемым поведением Вю (документссылки приветствуются), или я должен представить отчет об ошибке, или, наконец, просто ли я плохо структурирую свой код?
Заранее спасибо
<template>
<main v-html="obj.html || 'loading... (1)'">
</main>
</template>
<script>
export default {
name: 'Post',
data: function () {
return {
obj: {
html: 'loading... (2)'
}
}
},
created: async function () {
this.obj = await this.getObject()
this.obj.html = await this.getHtml()
console.log(this.obj.html)
},
methods: {
getObject: async function () {
const resp = await this.$http.get('https://jsonplaceholder.typicode.com/todos')
return resp.body[0]
},
getHtml: async function () {
const resp = await this.$http.get('https://jsonplaceholder.typicode.com/todos')
return resp.body[0].title
},
}
}
</script>