zoukankan      html  css  js  c++  java
  • vue渲染

    渲染:条件渲染,列表渲染

    1.条件渲染

    v-if、v-else、v-else-if       v-else、v-else-if 必须跟在v-if、v-else-if 之后否则不会被识别

    <div v-if="Math.random() > 0.5">
      Now you see me
    </div>
    <div v-else>
      Now you don't
    </div>
    <!-- 如果切换多个元素,可以在外面包含一层template,template不会显示 -->
    <template v-if="ok">
      <h1>Title</h1>
      <p>Paragraph 1</p>
      <p>Paragraph 2</p>
    </template>
    <!--  v-else-if -->
    <div v-if="type === 'A'">
      A
    </div>
    <div v-else-if="type === 'B'">
      B
    </div>
    <div v-else-if="type === 'C'">
      C
    </div>
    <div v-else>
      Not A/B/C
    </div>

    key管理可复用的元素

    下面例子中,input如果没有添加key,会复用,切换时,用户输入的值,会保留,只是替换了placeholder

    添加了唯一值key,input是两个独立的,每次切换时,都会重新渲染

    <template v-if="loginType === 'username'">
      <label>Username</label>
      <input placeholder="Enter your username" key="username-input">
    </template>
    <template v-else>
      <label>Email</label>
      <input placeholder="Enter your email address" key="email-input">
    </template>

    v-show    v-show始终渲染,只是切换display属性,不支持<template>元素

    <h1 v-show="ok">Hello!</h1>

    v-if与v-show的区别

    • v-if只有当满足条件时,才会被渲染。v-show是一直都会渲染且存在。
    • v-if会销毁和重建。v-show并不会销毁,只会切换css的display属性。
    • 如果运行时条件很少改变,则使用v-if。如果会频繁切换,则使用v-show。

    2.列表渲染

    v-for   v-for指令根据一组数组的选项列表进行渲染。绑定key:key 防止重用和重新排序现有元素

    渲染数组

    item in items语法,可以使用 of 代替 in,支持可选的第二个参数 (item, index) in items

    <ul id="example-1">
      <li v-for="item in items"  :key="item.id">
        {{ item.message }}
      </li>
    </ul>
    <!-- 带index -->
    <ul id="example-2">
      <li v-for="(item, index) in items">
        {{ parentMessage }} - {{ index }} - {{ item.message }}
      </li>
    </ul>
    var example1 = new Vue({
      el: '#example-1',
      data: {
        items: [
          { message: 'Foo' },
          { message: 'Bar' }
        ]
      }
    })

    v-for和v-if

    当v-for和v-if处于同一节点时,v-for的优先级比v-if的优先级高。如果你是有条件的跳过循环的执行,可以将v-if置于外层元素(或<template>)。

    <li v-for="todo in todos" v-if="!todo.isComplete">
      {{ todo }}
    </li>
    //只显示未完成的todo
    <ul v-if="todos.length">
      <li v-for="todo in todos">
        {{ todo }}
      </li>
    </ul>
    <p v-else>No todos left!</p>
    //置于外层循环

    渲染对象

    value in object方法,支持第二个参数key和第三个参数index 

    <div v-for="(value, key, index) in object">
      {{ index }}. {{ key }}: {{ value }}
    </div>
    new Vue({
      el: '#v-for-object',
      data: {
        object: {
          firstName: 'John',
          lastName: 'Doe',
          age: 30
        }
      }
    })
  • 相关阅读:
    Python获取当前 年 月 日
    HTML5手机应用的最大优势就是可以在网页上直接调试和修改
    使用PostSharp在.NET平台上实现AOP
    HTML5的设计目的是为了在移动设备上支持多媒体
    中法两国还将在中非、东非携手加强基础设施建设、安全、金融、能源、维和护航、医药卫生和教育培训等领域全面展开合作
    中国“互联网+”战略与欧洲单一数字市场建设、欧洲智慧城市建设等项目
    全球价值链的分工,‘国际产能合作’将带动全球产业链的调整
    中国在全球经济格局以及产业链条上的地位已今非昔比
    Bitmap Image Graphics
    C#利用WebClient 两种方式下载文件
  • 原文地址:https://www.cnblogs.com/zsj-02-14/p/10483367.html
Copyright © 2011-2022 走看看