2 回答
TA贡献1836条经验 获得超13个赞
存在竞争条件,即 DOM 元素在访问时不可用。解决方案是不访问由 Vue 在其外部创建的 DOM 元素。DOM 元素只有在异步请求后才可以使用:
<template>
<div>
<div ref="xml" id="xml">
{{ notation.data }}
</div>
<xml-js />
</div>
</template>
<script>
import axios from 'axios'
export default ({
data () {
return {
notation: null,
}
},
async mounted () {
const result = await axios
.get('http://localhost:3000/chromatic-scales/c-chromatic-scale')
this.notation = result;
this.$nextTick(); // wait for re-render
renderXml(this.$ref.xml); // pass DOM element to third-party renderer
}})
TA贡献1946条经验 获得超3个赞
您可以将 xml-loader.js 作为函数导入 Notation.vue。然后你可以简单地做这样的事情:
mounted () {
axios.get(PATH).then(result => {
this.notation = result
let xmlResult = loadXML(result)
doSomethingWithResult(xmlResult)
}
},
methods: {
doSomethingWithResult (result) {
// do something
}
}
添加回答
举报