如何在 Vue.js 中有条件地渲染元素?
2017-07-06
2221
我是 Vue.js 的新手,我刚刚阅读了此处有关条件渲染的文档( https://v2.vuejs.org/v2/guide/conditional.html ),但不知何故无法使其工作...
我的代码:
<button onclick="showTemplate()">Teste</button>
<template v-if="app">
<div id="app">
{{ message }}
</div>
</template>
function showTemplate(){
var app = new Vue({
el: '#app',
data: {
message: 'Hello Vue!'
}
})
}
我希望模板标签仅在应用程序实例化后渲染。 我也尝试过此代码的变体,但没有成功。 有人可以帮忙吗?
2个回答
使用
v-cloak
。
v-cloak
的预期用途是隐藏 Vue,直到它被实例化。
function showTemplate() {
var app = new Vue({
el: '#app',
data: {
message: 'Hello Vue!'
}
})
}
[v-cloak] {
display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.3.4/vue.js"></script>
<button onclick="showTemplate()">Teste</button>
<div id="app" v-cloak>
{{ message }}
</div>
以下是检索数据时隐藏“加载”屏幕的方法。在本例中,按钮将用作我们的加载屏幕。
var app = new Vue({
el: '#app',
data: {
message: 'Hello Vue!',
loaded: false
},
methods: {
getData() {
setTimeout(() => this.loaded = true, 2000)
}
}
})
[v-cloak] {
display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.3.4/vue.js"></script>
<div id="app" v-cloak>
<button v-if="!loaded" @click="getData">Get Data</button>
<div v-if="loaded">
{{ message }}
</div>
</div>
Bert
2017-07-06
尝试此操作并移除按钮。您无需在函数内调用实例。
// put it on your index.html
<div id="app">
{{ message }}
</div>
// put it on your script make sure that you have already a CDN of vuejs.
var app = new Vue({
el: '#app',
data: {
message: 'Hello Vue!'
}
})
Jrey
2017-07-06