引言
本文将介绍一下Vue的条件渲染和列表渲染,我们会使用if-else,if-else-if,show等指令。在列表渲染中我们会使用for循环。
条件渲染
我们通过一个示例来解释什么是条件渲染,对于条件渲染,我们只想在满足条件时才渲染我们想要的内容。
- v-if
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible" content="ie=edge" /> <title>vue</title> <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous" /> <script src="https://cdn.jsdelivr.net/npm/vue"></script> </head> <body> <div id="databinding"> <button v-on:click="showdata" v-bind:style="styleobj" class="btn btn-info" > 点击 </button> <span style="font-size:25px;" ><b>{{ show }}</b></span > <h1 v-if="show">这是h1标签</h1> <h2>这是h2标签</h2> </div> <script type="text/javascript"> var vm = new Vue({ el: "#databinding", data: { show: true, styleobj: { backgroundColor: "#2196F3!important", cursor: "pointer", padding: "8px 16px", verticalAlign: "middle" } }, methods: { showdata: function() { this.show = !this.show; } } }); </script> </body> </html>
在这个例子中我们创建了一个按钮和两个h标签,声明了一个名为show的变量,并将其初始化为值true。它显示在按钮附近。在单击按钮时,我们调用方法showdata,它切换变量show的值。这意味着在单击按钮时,变量show的值将从true变为false,false变为true。我们单机按钮,show变量的值改为false,h1就不会显示在浏览器,当true时才会显示
- v-else
我们改一下第一个示例中的代码,在h2标签上添加v-else
<h2 v-else>这是h2标签</h2>
这样我们在浏览器打开后,就能看到效果,当h1和h2时交替显示的
- v-show
v-show的行为与v-if相同,它根据给它分配的条件来控制显示和隐藏,v-if和v-show的区别在于,v-if如果条件为false,则从DOM中删除html元素,v-show只是隐藏了元素,也就是添加了display:none样式,内容始终存在与dom中
<div id="databinding"> <button v-on:click="showdata" v-bind:style="styleobj" class="btn btn-success" > 点击 </button> <span style="font-size:25px;" ><b>{{ show }}</b></span > <h1 v-if="show">H1</h1> <h2 v-else>H2</h2> <div v-show="show"> <b>V-Show:</b> <img src="img/img.jpg" width="100" height="100" /> </div> </div> <script type="text/javascript"> var vm = new Vue({ el: "#databinding", data: { show: true, styleobj: { backgroundColor: "#2196F3!important", cursor: "pointer", padding: "8px 16px", verticalAlign: "middle" } }, methods: { showdata: function() { this.show = !this.show; } } }); </script>
当我们点击show变成false后,我们可以看到DOM中的代码,它仍然在DOM中存在
列表渲染
现在我们条论v-for进行列表渲染
<div id="databinding"> <input type="text" v-on:keyup.enter="showinputvalue" v-bind:style="styleobj" placeholder="输入水果名" /> <h1 v-if="items.length>0">显示水果名称</h1> <ul> <li v-for="a in items">{{ a }}</li> </ul> </div> <script type="text/javascript"> var vm = new Vue({ el: "#databinding", data: { items: [], styleobj: { width: "30%", padding: "12px 20px", margin: "8px 0", boxSizing: "border-box" } }, methods: { showinputvalue: function(event) { this.items.push(event.target.value); } } }); </script>
名为items的变量声明为数组。在方法中,有一个名为showinputvalue的方法,它被分配给带有水果名称的输入框。
我们看下生成的代码:
如果我们还想显示数组的索引,修改一下代码
<ul> <li v-for="(a, index) in items">{{ index }}--{{ a }}</li> </ul>
总结
以上以简单的示例说明了Vue中的条件渲染和列表渲染,知识点比较简单,需要手动将代码敲出来才能更深刻的理解,希望对你有帮助!