Je ne suis pas très bon en anglais, je décrirai le problème aussi clairement que possible.
Syntax Error: SyntaxError: /Users/sinx/development/cxz/src/views/Index.vue: Unterminated template (33:19)
La console rapportera cette erreur:
<template>
<div class="Index">
<div
class="content"
v-html="content"
></div>
</div>
</template>
export default {
data() {
return {
content: '',
}
},
mounted() {
// This data is returned by axios,This is rich text with lots of tags, including script
this.content="<p>1111</p><div>222<div><script>alert() //There is a lot of code here.</script>"
}
}
4 Réponses :
Utilisez axios ...
La fonction axios.get utilise une promesse. Lorsque l'API renvoie les données avec succès, le code dans le bloc then est exécuté.
mounted() {
axios.get(url).then(response => {
this.results = response.data
})
}
Voici le lien Utilisation d'Axios pour consommer des API du site officiel.
Merci, Ce n'est pas un problème avec axios. Les données que j'ai envoyées sont transmises à l'aide d'axios.
Assurez-vous d'inclure votre code js dans les balises de scripts, comme ci-dessous;
<script> include </script>
Cela devrait résoudre votre problème.
vous devriez mettre tous vos JS dans la balise script. La structure de base d'une application Vue est la suivante.
<template>
//Your html here
</template>
<script>
export default {
data(){
return {
content : ""
}
},
mounted(){
axios.get(url).then(response => {
this.content = response.data //depends on the structure of response
}).then(error => {
console.log(error);
});
}
}
<script>
J'espère que cela vous aidera :)
Trouvez le problème, si vous voulez rendre du texte riche, en particulier du texte riche avec une balise srcipt, la balise doit être échappée. Mais, bien que v-html puisse rendre les balises, mais ne puisse pas exécuter le contenu du script, si je veux savoir comment exécuter le contenu du script, j'ai un moyen.
Bonjour, bienvenue dans stack overflow :) Il semble que votre code JS devrait être dans une balise de script comme