v-for标签可以用来遍历数组,将数组的每一个值绑定到相应的视图元素中去,此外,v-for还可以遍历对象的属性,并且可以和template模板元素一起使用。

一、迭代数组

html:

<ul>
<li v-for="li in list" :title="li.title">{{li.name}}</li>
</ul>

js:

el:'...'
data:{
list:[{name:"China",title:'中国'},{name:"Japan",title:'中国的一部分'},{name:"Korea",title:"韩国"}]
}

这里的list一个对象构成的数组,通过v-for将数组每一项映射到<li>标签中去。li是一个变量,代表list中的每一项,最终结果如下:

China
Japan
Korea

v-for 命令还可以接受index作为可选的第二参数,当有两个参数时,参数之间用逗号分隔,并包含在一组括号里面。像这样

<ul>
<li v-for="(li,i) in list" :title="li.title">{{li.name}}--{{i}}</li>
</ul>
China--0
Japan--1
Korea--2

二,迭代对象属性

v-for命令还可以迭代一个对象的属性。默认是迭代属性的值。不像迭代数组,它可以接受两个可选的参数,迭代属性的key和index。

html:

    <ul>
<li v-for="(li,key,index) in obj">{{key}}--{{li}}--{{index}}</li>
</ul>

js:

obj:{
name:'gg',age:'23',job:'none',dream:'code'
}

效果:

name--gg--0
age--23--1
job--none--2
dream--code--3

三、 v-for和range(整数列)

比如我要100个妹子,可以这样写:

<li v-for='i in 100'>妹子{{i}}</li>

这样就得到100个妹子,而且号码是从1开始的。

四、把张老师网站上的妹子挪过来

他网站里的妹子图片都在一个文件夹里而且名字很有规律,很适合用v-for命令。

html:

    <template v-for="mm in mms">
<span>{{mm.name}}</span>
<image :src="mm.location"></image><br/>
</template>

这里的template元素用来将几个重复出现的元素打包起来。

js:

el:'v-for',
data:{mms:[{name:'mm1',location:'http://image.zhangxinxu.com/image/study/s/s128/mm1.jpg'},
{name:'mm2',location:'http://image.zhangxinxu.com/image/study/s/s128/mm2.jpg'},
{name:'mm3',location:'http://image.zhangxinxu.com/image/study/s/s128/mm3.jpg'},
{name:'mm4',location:'http://image.zhangxinxu.com/image/study/s/s128/mm4.jpg'}
]
}

上面这样写没问题,不过做了大量重复的工作,可以用computed计算属性来简化他:

computed:{
mms:function(){
var arr=[];
for(var i= 1;i<7;i++){
var temObj={};
temObj.name='mm'+i;
temObj.location='http://image.zhangxinxu.com/image/study/s/s128/mm'+i+'.jpg';
arr.push(temObj);
}
return arr;
}
}

mms计算属性所对应的函数返回一个像上面一样的数组。有点在于可以通过i参数来方便的调整mm的数量。这就是计算属性computed和静态属性data相比的强大之处。

效果:

mm1 mm2 mm3 mm4 mm5 mm6

五. 值得注意的点

如果你的list是由原始类型的元素构成,比如下面这样:

data:{

    list:[1,2,3]    

}

渲染出这样的视图:

现在你想让第一个元素变成5,

通过this.list[0] = 5这样的方法是无效的。无法触发视图的更新。因为它绕过了vue数据绑定的基础Object.defineProperty,因此,需要使用Vue.set方法,来通知VUE进行视图变更

像下面这样:

//this.list[0] = 5 无效

Vue.set(this.list, 0, 5)//三个参数分别是要改变的数组,要改变元素的索引和要改变的值

Vue.js之v-for的更多相关文章

  1. MVC、MVP、MVVM、Angular.js、Knockout.js、Backbone.js、React.js、Ember.js、Avalon.js、Vue.js 概念摘录

    注:文章内容都是摘录性文字,自己阅读的一些笔记,方便日后查看. MVC MVC(Model-View-Controller),M 是指业务模型,V 是指用户界面,C 则是控制器,使用 MVC 的目的是 ...

  2. Vue.js学习笔记(1)

    数据的双向绑定(ES6写法) 效果: 没有改变 input 框里面的值时

  3. vue.js初级入门之最基础的双向绑定操作

    首先在页面引入vue.js以及其他需要用到的或者可能要用到的插件(这里我多引用了bootstrap和jquery) 引用的时候需要注意文件的路径,准备工作这样基本就完成了,下面正式开始入门. vue. ...

  4. Vue.js的入门

    介绍 vue.js 是一个客户端js库,可以用来开发单页应用.为了一个项目的选型,我前前后后的看了angular.react.vuejs ,对前两者是佩服,对后者是爱.因为它简洁干净利索,并且还有高大 ...

  5. Vue.js学习笔记(2)vue-router

    vue中vue-router的使用:

  6. vue.js在windows本地下搭建环境和创建项目

    Vue.js是一套构建用户界面的渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合.另一方面,Vu ...

  7. 一份不错的vue.js基础笔记!!!!

    第一章 Vue.js是什么? Vue(法语)同view(英语) Vue.js是一套构建用户界面(view)的MVVM框架.Vue.js的核心库只关注视图层,并且非常容易学习,非常容易与其他库或已有的项 ...

  8. vue.js+boostrap最佳实践

    一.为什么要写这篇文章 最近忙里偷闲学了一下vue.js,同时也复习了一下boostrap,发现这两种东西如果同时运用到一起,可以发挥很强大的作用,boostrap优雅的样式和丰富的组件使得页面开发变 ...

  9. Vue.js常见问题

    1.Vuejs组件 vuejs构建组件使用 Vue.component('componentName',{ /*component*/ }): 这里注意一点,组件要先注册再使用,也就是说: Vue.c ...

  10. vue.js+boostrap

    vue.js+boostrap最佳实践 一.为什么要写这篇文章 最近忙里偷闲学了一下vue.js,同时也复习了一下boostrap,发现这两种东西如果同时运用到一起,可以发挥很强大的作用,boostr ...

随机推荐

  1. iOS 9 强制横屏

    首先在plist 文件中 Supported interface orientations 选项 只留下一个 portrait 屏幕强制横屏 使用以下代码 self.navigationControl ...

  2. 自己实现苹果安装app动画

    最近在学习CALayer相关动画,然后某一天突然发现苹果安装app这动画就很不错啊,所以就想自己实现下. 具体效果如图: 还是不试不知道一试吓一跳啊,这看上去简单的动画没我想象的那么简单. 首先这个动 ...

  3. java读取txt/pdf/xls/xlsx/doc/docx/ppt/pptx

    环境准备txt利用common-iopdf利用pdfbox剩下的用POI关于POI,读取xls没啥特别的,主要是读取doc和ppt,需要下载poi源代码,然后将poi-src-3.7-20101029 ...

  4. js操作数组

    一.数组的声明方式: var colors = new Array();//创建数组 var colors = new Array(20);//创建20个长度的数组 var colors = new ...

  5. TeamCity实战(1):准备工作

    环境: Windows Server 2008 R2 SP1(不会再有SP2,参考这里:http://www.techspot.com/news/50599-microsoft-wont-releas ...

  6. SQL Server里面如何检查没有释放的游标

    一直以来对SQL SERVER的游标都不怎么感冒,也很少使用SQL Server里面的游标,前几天有一位网友问如何检查数据库里面没有释放的游标,觉得有点意思,就测试验证了一下,顺便整理于此. 会话1: ...

  7. web.xml is missing and <failOnMissingWebXml> is set to true 错误解决办法

    对web项目的解决方案: 右击项目——>Java EE Tools——>Generate Deployment Descriptor Stub. 然后系统会在src/main/webapp ...

  8. 机器学习实战笔记(Python实现)-01-K近邻算法(KNN)

    --------------------------------------------------------------------------------------- 本系列文章为<机器 ...

  9. MySQL 复制表

    MySQL 复制表 如果我们需要完全的复制MySQL的数据表,包括表的结构,索引,默认值等. 如果仅仅使用CREATE TABLE ... SELECT 命令,是无法实现的. 本文将为大家介绍如何完整 ...

  10. x01.Weiqi.12: 定式布局

    定式 下一步当将定式保存到数据库中,如布局中的代码所示,但其初始的代码更有利于理解.以小飞挂为例: // 0 // + 0 0 // + // // + List<Pos> P_LuSta ...