[英]Vue & conditional rendering with template tag
我正在嘗試遵循文檔:
但是由於某種原因,我的模板沒有按預期工作,只要我放<template v-if="variable">
vue 就無法渲染任何東西。
<script type="text/x-template" id="dashboard-inititial-message">
<template v-if="okBoom">
<h1>Title</h1>
<p>Paragraph 1</p>
<p>Paragraph 2</p>
</template>
<div v-if="ok">
<h1>Title</h1>
<p>Paragraph 1</p>
<p>Paragraph 2</p>
</div>
<div v-else>
<p>ELSE</p>
</div>
</script>
有什么建議嗎?
演示問題的片段:
關於 vue.js 有一點需要了解,Peter 在評論中指出了這一點。 模板不能是根元素,通常根標簽只能是一個。
所以當你有這樣的模板時:
<script type="text/x-template" id="dashboard-inititial-message-mk1">
<div v-if="okBoom">
<h1>Title</h1>
<p>Paragraph 1</p>
<p>Paragraph 2</p>
</div>
<h3>adas</h3>
<div v-if="ok">
<h1>Title</h1>
<p>Paragraph 1</p>
<p>Paragraph 2</p>
</div>
</script>
您基本上是在向 vue.js 詢問問題。 帶有 okBoom 的 div 結束后,Vue 將停止解析您的模板。
網上有很多和我類似的問題:
簡而言之,解決方案。 將您的模板包裝到主跨度、div 或轉換中(然而,這個似乎有點 hacky,另一方面它不會生成不必要的 html 標記)。
我為加載程序使用條件模板渲染(發生服務器請求時)
new Vue({ el: "#app", template: `<div v-else class='somePage'> <template v-if="isLoading"> <div>LOADING...</div> </template> <template v-else> <h1>title</h1> <p>The final rendered result will not include the "template" element.</p> </template> </div>`, data: () => ({ isLoading: true }), mounted() { setTimeout(this.getData.bind(this), 1500); }, methods: { async getData() { // await axios ...do some request... this.isLoading = false } } });
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script> <div id="app"></div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.