VUE 入门基础(6)

六,条件渲染
  v-if 添加一个条件块
    <h1 v-if=“ok”>Yes</h1>
  也可以用v-else 添加else 块

  <template> 中 v-if条件组

  因为v-if 是一个指令,需要将它添加到一个元素上,但是如果我们想切换多个元素呢可以把一个<template>
  元素当做包装元素,并在上面使用v-if,最终的渲染结果不会包括它。
    <template>
      <h1>Title</h1>
      <p>Paragraph 1</p>
      <p>Paragraph 2</p>
    </template>

  v-else
    可以用v-else 指令给v-if 添加一个else 块
    <div v-if="Math.random() > 0.5">
      Sorry
    </div>
    <div v-else>
      Not sorry
    </div>
    v-else 元素必须紧跟在v-if元素或者v-else-if 的后面 否则它不能被识别。
  v-else-if
    作用 v-if 的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>
  v-else-if必须跟在v-if或者v-else-if之后
  使用key控制元素的可重用
  vue提供一种方式让你可以自己决定是否要复用元素,你要做的是添加一个属性key ,key 必须带有唯一的值。
    <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>
    <label> 元素仍然会被复用,因为没有添加了key 属性
  v-show
    v-show 的元素会始终渲染并保持在DOM 中v-show 是简单的切换元素的css 属性display
    v-show 不支持<template>语法

七,列表渲染
  v-for
    用v-for 指令根据一组数组的选项列表进行渲染,v-for 指令需要以 item in items 形式的特殊语法
    items 是源数组并且 item 是数组元素迭代的别名。
  基本用法
    <ul id="example-1">
      <li v-for=‘item in items‘>{{item.message}}</li>
    </ul>
    var example1 = new Vue({
      el:‘#example-1‘,
      data: {
        items: [
        {message:‘Foo‘},
        {message:‘Bar‘}
        ]
      }
    })
    结果:
      Foo
      Bar
    v-for 块中 ,我们拥有对父作用域属性的完全访问权限。
    <ul id="example-2">
      <li v-for="(item,index) in items">
        {{parentMessage}} - {{ index }} - {{ item.message }}
      </li>
    </ul>
    var example2 = new Vue({
      el: ‘#example -2‘,
      data: {
        parentMessage: ‘Parent‘,
          items: [
              {message: ‘Foo‘},
              {message: ‘Bar‘}
          ]
      }
    })
    结果:
      Parent - 0 -Foo
      Parent - 1 - Bar
    也可以用 of 替代 in 作为分隔符,因为它是最接近 JavaScript 迭代器的语法:
      <div v-for="item of items"></div>

  Template v-for
    如同 v-if 模板,你也可以用带有v-for 的<template> 标签来渲染多个元素块
    <ul>
      <template v-for="item in items">
        <li>{{ itme.msg}}</li>
        <li class="divider"></li>
      </template>
    </ul>
  对象迭代 v-for
    也可以用v-for 通过一个对象的属性来迭代
    <ul id="repeat-object">
      <li v-for="value in object">
        {{value}}
      </li>
    </ul>
    new Vue({
        el: ‘#repeat-object’,
        data: {
          object: {
              FirstName: ‘John‘,
              LastName: ‘Doe‘,
              Age: 30
        }
      }
    })
    结果:
      John
      Doe
      30
   也可以提供第二个的参数为键名:
    <div v-for="(value,key) in object">
      {{ key}} : {{ value }}
    </div>

  第三个参数为索引
    <div v-for="(value,key,index) in object">
      {{ key }} ,{{key}} ,{{ value }}
    </div>
  整数迭代 v-for
    v-for 也可以取整数,在这种情况下,它将重复多次模板
      <div>
        <span v-for="n in 10">{{n}} </span>
      </div>
  组件 和v-for
    在自定义数组里,你可以想任何普通元素一样使用v-for
      <my-component v-for="item in items"></my-component>
      然而他不能自动传递传递数据到组件里,因为组件有自己独立的作用域,为了传递数据到组件里,我们要用props.
      <my-component v-for="(item, index) in items" v-bind:item="item" v-bind:index="index">
      </my-component>
  key
    为了给vue 一个提示,以便它跟踪每个节点的身份,从而重用和重新排序现有元素,你需要为,每一项
    提供一个唯一key 属性,理想的key 值是每一项都有唯一id ,它的工作方式类似于一个属性,所以你需要v-bvind 来绑定动态值。
    <div v-for="item in items" :key="item.id"></div>
    建议尽可能使用 v-for 来提供 key ,除非迭代 DOM 内容足够简单,或者你是故意要依赖于默认行为来获得性能提升。
 数组更新检测
  变异方法
    vue包含一组观察数组的变异方法,所以我们将会触发视图更新,这些方法如下。
    push() pop() shift() unshift() splice()
    sort() reverse()
  重塑数组
    变异方法会改变原始的数组,也有非变异方法,如:filter(),concat().slice(),这些不会改变原始数组,但是总是返回一个新数组,使用非变异方法的时候,可以用新数组变异方法时,可以用新数组替换久数组。
    example1.items = example1.items.filter(function (item) {
        return item.message.match(/Foo/)
    })
  显示过滤/ 排序结果
  想要显示一个数组的过滤或排序副本,而不时间改变或重置原始数据,可以创建过滤或排序数组的计算属性。
      <li v-for="n in evenNumbers">{{ n }}</li>
        data: {
          numbers: [1,2,3,4,5]
        },
        computed: {
          evenNumbers: function() {
          evenNumbers: function(){
          return this.numbers.filter(function (number){
            return number % 2 ===0
          })
        }
      }
    }
  可以在计算属性不合适的情况下(列如,在嵌套 v-for 循环中) 使用method方法:
      <li v-for="n in even(number)">{{ n }}</li>
        data: {
          numbers: [1,2,3,4,5]
        },
        methods: {
          even: function(unmbers) {
          return numbers.filter(function(number){
              return number % 2 === 0
            })
          }
        }

时间: 2024-07-28 19:00:54

VUE 入门基础(6)的相关文章

1.Vue入门基础

Vue学习 1.Vue简介 Vue (读音 /vju?/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合.另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动. 中文网:https://vuejs.bootcss.com/ 2.如何使用Vue CDN链接 对于制作原型或学习,你可以这样使用最新版本: <sc

VUE 入门基础(9)

十一,深入响应式原理 声明响应式属性 由于Vue不允许动态添加根级响应式属性,所以你必须在初始化实例钱声明根级响应式属性,哪怕只有一个空值. var vm = new Vue({ data:{ // 声明 message 为一个空字符串 message: ' ' }, template: '<div>{{ message }}</div>' }) // vm.message = 'Hello!' vm.message = 'Hello!'   如果你在data 选项中未声明 mes

VUE 入门基础(5)

五,Class 与 Style 绑定 绑定HTML class 对象语法 我们可以传给v-bind:class 一个对象,以动态的切换class <div v-bind:class="{active:isActive}"></div> 上面的语法表示 classactive 的更新将取决于数据属性 isActive 是否为真 . <div class="static" v-bind:class="{active:isActiv

VUE 入门基础(1)

一,安装 Vue.js 不支持 IE8 及其以下版本,因为 Vue.js 使用了 IE8 不能模拟的 ECMAScript 5 特性. Vue.js 支持所有兼容 ECMAScript 5 的浏览器. npm 在用 Vue.js 构建大型应用时推荐使用 NPM 安装, NPM 能很好地和诸如 Webpack 或 Browserify 模块打包器配合使用. Vue.js 也提供配套工具来开发单文件组件. # 最新稳定版  npm install vue 命令行工具 用于快速搭建大型页面应用,带来现

Vue入门--基础部分

一.初识Vue 使用双大括号{{message}}将数据渲染进DOM中. 可以使用app.message对渲染后的数据进行修改. Vue常用的指令: 1)v-bind 用来绑定常用属性 主要用法:直接在html标签上添加v-bind:属性名="vue实例中的message" 2)v-if  条件 主要用法:直接在html标签上添加v-if="vue实例中的某个属性名",这个属性对应的属性值应该是布尔值 3)v-for  可以绑定数组的数据来渲染一个列表 主要用法:实

Vue入门教程

Vue入门基础基础 TypeScript 为 JavaScript 带来静态类型检查,让 JavaScript 编写中大型应用的时候可以应用工具来避免部分错误. Vue 很早就支持 TypeScript,但配置起来比较麻烦,幸好有了 Vue CLI 3.0.安装好 vue-cli 之后,使用 vue create 项目名称 来创建项目,vue 脚本手架自动创建以项目名称命名的目录. vue-cli 3 生成的项目结构比较科学,尤其是通过 components 和 views 将作为控件的组件和作

【Vue 入门】使用 Vue2 开发一个展示项目列表的应用

前言 一直没有找到一个合适的展示个人项目的模板,所以自己动手使用 Vue 写了一个.该模板基于 Markdown 文件进行配置,只需要按一定规则编写 Markdown 文件,然后使用一个 在线工具 转为 JSON 文件即可.下面是该项目的在线地址和源码.本文主要记录一下项目中用到的相关知识. 在线演示    源码 效果 程序最终的效果如下图所示: 整个项目只包含两个组件:项目介绍 和 侧边导航,逻辑比较简单,十分适合入门. 环境配置 这里我们使用 Gulp 和 Webpack 用作项目构建工具.

【转载】【Vue 入门】使用 Vue2 开发一个展示项目列表的应用

目录 前言 效果 环境配置 Gulp 和 Webpack 集成 Gulp 配置 Webpack 配置 Vue HelloWorld 基础 组件 ES6 let for of 循环 Set 和 Map 参考文章 前言 一直没有找到一个合适的展示个人项目的模板,所以自己动手使用 Vue 写了一个.该模板基于 Markdown 文件进行配置,只需要按一定规则编写 Markdown 文件,然后使用一个 在线工具 转为 JSON 文件即可.下面是该项目的在线地址和源码.本文主要记录一下项目中用到的相关知识

Vuejs入门基础笔记

首先说明下 本文来自于学习慕课网: vue.js入门基础的学习心得,体会,笔记. 1.从 .vue到页面 通过蓝色部分的脚手架工具我们实现vue的界面的展示.其中蓝色部分的技术细节我们可以不用关注.我们需要关注的是绿色部分的实现. 其中绿色部分的.js就是我们的数据层,也就是module模块.而html和css主要负责页面的元素展示以及css效果. 我们需要关注的,是如下图的三个部分,下图是vue的一个组件具体由哪三个部分组成: 2.vue的一些重要的组件总结和示例: 3.vue的基础框架 4.