Vue.js 列表渲染2

v-for里使用值范围

v-for也可以接受整数。在这种情况下,它会把模板重复对应次数。

<div>  <span v-for="n in 10">{{ n }} </span></div>

<template>上使用v-for

类似于v-if,你也可以利用带有v-for<template>来循环渲染一段包含多个元素的内容。比如:

<ul>  <template v-for="item in items">    <li>{{ item.msg }}</li>    <li class="divider" role="presentation"></li>  </template></ul>

v-forv-if一同使用

注意我们不推荐在同一元素上使用v-ifv-for

当它们处于同一节点,v-for的优先级比v-if更高,这意味着v-if将分别重复运行于每个v-for循环中。当你只想为部分项渲染节点时,这种优先级的机制会十分有用,如下:

<li v-for="todo in todos" v-if="!todo.isComplete">  {{ todo }}</li>

上面的代码将只渲染未完成的 todo。
而如果你的目的是有条件地跳过循环的执行,那么可以将v-if置于外层元素 (或<template>) 上。如:

<ul v-if="todos.length">  <li v-for="todo in todos">    {{ todo }}  </li></ul><p v-else>No todos left!</p>

在组件上使用v-for

在自定义组件上,你可以像在任何普通元素上一样使用v-for

<my-component v-for="item in items" :key="item.id"></my-component>

2.2.0 的版本里,当在组件上使用v-for时,key现在是必须的。****
然而,任何数据都不会被自动传递到组件里,因为组件有自己独立的作用域。为了把迭代数据传递到组件里,我们要使用 prop:

<my-component  v-for="(item, index) in items"  v-bind:item="item"  v-bind:index="index"  v-bind:key="item.id"></my-component>

不自动将item注入到组件里的原因是,这会使得组件与v-for的运作紧密耦合。明确组件数据的来源能够使组件在其他场合重复使用。
下面是一个简单的 todo 列表的完整例子:

<div id="todo-list-example">  <form v-on:submit.prevent="addNewTodo">    <label for="new-todo">Add a todo</label>    <input      v-model="newTodoText"      id="new-todo"      placeholder="E.g. Feed the cat"    >    <button>Add</button>  </form>  <ul>    <li      is="todo-item"      v-for="(todo, index) in todos"      v-bind:key="todo.id"      v-bind:title="todo.title"      v-on:remove="todos.splice(index, 1)"    ></li>  </ul></div>

注意这里的is="todo-item"attribute。这种做法在使用 DOM 模板时是十分必要的,因为在<ul>元素内只有<li>元素会被看作有效内容。这样做实现的效果与<todo-item>相同,但是可以避开一些潜在的浏览器解析错误。

Vue.component('todo-item', {  template: '    <li>      {{ title }}      <button v-on:click="$emit(\'remove\')">Remove</button>    </li>  ',  props: ['title']})new Vue({  el: '#todo-list-example',  data: {    newTodoText: '',    todos: [      {        id: 1,        title: 'Do the dishes',      },      {        id: 2,        title: 'Take out the trash',      },      {        id: 3,        title: 'Mow the lawn'      }    ],    nextTodoId: 4  },  methods: {    addNewTodo: function () {      this.todos.push({        id: this.nextTodoId  ,        title: this.newTodoText      })      this.newTodoText = ''    }  }})

来源:https://www.icode9.com/content-4-796551.html

(0)

相关推荐

  • ES6、Vue指令、 计算属性、绑定Class和Style、条件渲染、列表渲染、表单输入绑定(双向数据绑定)

    第十三章 Vue框架 13.1 ES6 ES6 是 ECMAScript 6.0 的简写,即 JavaScript 语言的下一代标准,已经在 2015年6月正式发布了,它的目标是让JS能够方便的开发企 ...

  • 7个实用的 Vue.js 工具和库

    前端技术优选 昨天 以下文章来源于前端迷社区 ,作者小迷妹 大家好,我是为前端娱乐圈操碎了心的小迷妹,正宗前端开发一枚,每天推荐一个小工具/源码,装满你的收藏夹,每天分享一个小技巧,让你轻松节省开发效 ...

  • vue.js的安装

    公司要开始分配给我做前后端分离项目了555555555555 让我一个java的去了解vue并且还要会搭建=-= 莫得办法那么就开始必不可少的安装环节吧: 第一步! 安装node.js: 首先进入官网 ...

  • .net core3.1 webapi + vue.js + axios实现跨域

    我所要讲述的是,基于.net core3.1环境下的webapi项目,如何去使用axios对接前端的vue项目 既然谈到axios,这里贴出axios的官方文档地址: http://www.axios ...

  • 23 列表渲染与“就地复用”原则

    目录 遍历数组 遍历对象 使用值范围 组件的"就地复用"原则 源码 遍历数组 <!-- 一般遍历数组 --> <li v-for="item in it ...

  • 15 v-if 条件渲染与 v-for 列表渲染

    目录 v-if 条件渲染 组件的缓存和复用 v-for 与大数据列表中的组件复用 源码 v-if 条件渲染 在vue源码中有这样一个函数: function processIf (el) { var ...

  • Vue.js权威指南

    一.遇见Vue.js 1.MVP,从MVC演化而来,Controller/Presenter负责逻辑的处理,完全把View和Model进行了分享,主要的程序逻辑在Presenter里实现,与具体的Vi ...

  • 记一次vue将列表下载为excel的兼容写法

    记一次vue将列表下载为excel的兼容写法 需求需要将后端返回的列表数据下载到本地,查询资料发现采用blob文件流下载 1.后端返回的是blob文件流,传统的模拟href点击在IE下不兼容,无法下载 ...

  • 强悍!基于Vue的无渲染的富文本编辑器——tiptap!

    介绍 tiptap编辑器基于Prosemirror,完全可扩展且无渲染.可以轻松地将自定义节点添加为Vue组件. Github https://github.com/scrumpy/tiptap 为什 ...