zoukankan      html  css  js  c++  java
  • Vue入门教程 第三篇 (条件、循环)

    v-if语法(条件)

    符合条件时显示(渲染)某一元素。

     1 <div id="app">
     2     <div v-if="ok">
     3       <h1>title</h1>
     4     </div>
     5     
     6      <div v-if="type==1">
     7       <h1>title2</h1>
     8     </div>
     9      <div v-else-if="type==2">
    10       <h1>title3</h1>
    11     </div>
    12      <div v-else>
    13       <h1>title4</h1>
    14     </div>
    15     
    16     <div v-if="2>1">
    17       <h1>title5</h1>
    18     </div>
    19 </div>
    20     
    21 <script>
    22 new Vue({
    23   el: '#app',
    24   data: {
    25     type: '1',
    26     ok: true
    27   }
    28 })
    29 </script>

    执行结果:

    v-if可以使用data对象,也可以直接使用表达式(如:2>1)。

    v-show也可以达到根据条件显示元素的目的,但是两者有一些区别。

    v-if与v-show区别:

    相同点:v-if与v-show都可以动态控制dom元素显示隐藏

    不同点:v-if显示隐藏是将dom元素整个添加或删除,而v-show隐藏则是为该元素添加css--display:none,dom元素还在。

    需要注意的是,当一个元素默认在css中加了display:none属性,这时通过if-show修改为true是无法让元素显示的。原因是显示隐藏切换,只是会修改element styledisplay:""或者display:none,并不会覆盖掉或修改已存在的css属性。

    更详细的区别这里直接引用Young Dreamer的博客内容:

    1.手段:v-if是动态的向DOM树内添加或者删除DOM元素;v-show是通过设置DOM元素的display样式属性控制显隐;

    2.编译过程:v-if切换有一个局部编译/卸载的过程,切换过程中合适地销毁和重建内部的事件监听和子组件;v-show只是简单的基于css切换;

    3.编译条件:v-if是惰性的,如果初始条件为假,则什么也不做;只有在条件第一次变为真时才开始局部编译(编译被缓存?编译被缓存后,然后再切换的时候进行局部卸载); v-show是在任何条件下(首次条件是否为真)都被编译,然后被缓存,而且DOM元素保留;

    4.性能消耗:v-if有更高的切换消耗;v-show有更高的初始渲染消耗;

    5.使用场景:v-if适合运营条件不大可能改变;v-show适合频繁切换。

      

    v-for语法(循环)

    v-for 指令需要以 data in datas 形式的特殊语法实现, datas 是源数据数组并且 data 是数组元素迭代的别名。

    范例:

     1 <div id="app">
     2   <ol>
     3     <li v-for="data in datas">
     4       {{ data.name }}
     5     </li>
     6   </ol>
     7 </div>
     8 <script>
     9 new Vue({
    10   el: '#app',
    11   data: {
    12     datas: [
    13       { name: 'test' },
    14       { name: 'test2' },
    15       { name: 'test3' }
    16     ]
    17   }
    18 })
    19 </script>

    执行结果:

    使用v-for迭代显示一个完整的对象(包括index、key和value):

     1 <div id="app">
     2   <ul>
     3     <li v-for="(value, key, index) in object">
     4      {{ index }}. {{ key }} : {{ value }}
     5     </li>
     6   </ul>
     7 </div>
     8 <script>
     9 new Vue({
    10   el: '#app',
    11   data: {
    12     object: {
    13       name: 'Jimmy',
    14       sex: 'male',
    15       age: 16
    16     }
    17   }
    18 })
    19 </script>

    执行结果:

    其中,index是索引,key是键值,value是值内容。

  • 相关阅读:
    在Android工程中运行Java程序问题
    sklearn.neighbors.kneighbors_graph的简单属性介绍
    python中的“.T”操作
    numpy中关于*和dot的区别
    一个Window Service引发的感想
    项目管理之初步认识
    由敏捷开发中开发认领自己的工作内容的感想
    SQL Server2008 inner join多种方式的实践
    浅谈业务逻辑和技术哪个更重要
    敏捷人生之初步认识
  • 原文地址:https://www.cnblogs.com/JHelius/p/11684203.html
Copyright © 2011-2022 走看看