【发布时间】:2020-11-10 04:37:33
【问题描述】:
我有一个页面,我称之为 domain.com/subpage?soundfile=something
在我的 fetch 方法中,我使用来自 url 的查询来实际获取数据。根据console.log,查询有效,我正在获取数据并将其分配给同样有效的this.recording。但是,我的跨度和音频元素都不会更新。为什么?
<template>
<div>
<audio controls>
<source :key="key" :src="recording" type="audio/mp3" />
</audio>
<span :key="key">{{ recording }}</span>
</div>
</template>
<script>
const axios = require("axios").default;
export default {
data() {
return {
key: 0,
recording: ""
};
},
async fetch(context) {
const ip = await axios.get(
"somebackend/?soundfile=" + context.query.soundfile
);
this.recording = ip.data[0].file.url;
console.log(this.recording); // gives me the correct url/mp3 file
this.key++; // should update the audio element and the span but doesn't
}
};
</script>
【问题讨论】:
-
<source>元素上的key属性有什么意义?fetch是如何被调用的?我感觉this不是你所期望的 -
当它没有更新时我添加了一个密钥,认为当我更改密钥时它可能会更新。 fetch 函数的最后一行。还是不行。
-
你忘了回答
fetch怎么叫?我认为这是关键 - 通常,这些函数被创建为methods或在mounted或created等内部执行......但是你编写它的方式在 vue 中没有意义 - 即`fetch` vue 组件上的属性 - 在任何地方都看不到记录 -
nuxt docs 它会被自动调用,就像我最终使用的 asyncData 一样
-
哦,你从来没有提到过 nuxt
标签: javascript vue.js nuxt.js