Vue.js之v-for
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的更多相关文章
- 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 的目的是 ...
- Vue.js学习笔记(1)
数据的双向绑定(ES6写法) 效果: 没有改变 input 框里面的值时
- vue.js初级入门之最基础的双向绑定操作
首先在页面引入vue.js以及其他需要用到的或者可能要用到的插件(这里我多引用了bootstrap和jquery) 引用的时候需要注意文件的路径,准备工作这样基本就完成了,下面正式开始入门. vue. ...
- Vue.js的入门
介绍 vue.js 是一个客户端js库,可以用来开发单页应用.为了一个项目的选型,我前前后后的看了angular.react.vuejs ,对前两者是佩服,对后者是爱.因为它简洁干净利索,并且还有高大 ...
- Vue.js学习笔记(2)vue-router
vue中vue-router的使用:
- vue.js在windows本地下搭建环境和创建项目
Vue.js是一套构建用户界面的渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合.另一方面,Vu ...
- 一份不错的vue.js基础笔记!!!!
第一章 Vue.js是什么? Vue(法语)同view(英语) Vue.js是一套构建用户界面(view)的MVVM框架.Vue.js的核心库只关注视图层,并且非常容易学习,非常容易与其他库或已有的项 ...
- vue.js+boostrap最佳实践
一.为什么要写这篇文章 最近忙里偷闲学了一下vue.js,同时也复习了一下boostrap,发现这两种东西如果同时运用到一起,可以发挥很强大的作用,boostrap优雅的样式和丰富的组件使得页面开发变 ...
- Vue.js常见问题
1.Vuejs组件 vuejs构建组件使用 Vue.component('componentName',{ /*component*/ }): 这里注意一点,组件要先注册再使用,也就是说: Vue.c ...
- vue.js+boostrap
vue.js+boostrap最佳实践 一.为什么要写这篇文章 最近忙里偷闲学了一下vue.js,同时也复习了一下boostrap,发现这两种东西如果同时运用到一起,可以发挥很强大的作用,boostr ...
随机推荐
- Android Couldn't load BaiduMapSDK
什么都不用多说,看代码 Couldn't load BaiduMapSDK_v3_2_0_15 from loader dalvik.system.PathClassLoader[DexPathLis ...
- UIButton
//UIButton->UIControl->UIView //UIControl 带有操作的控件都是继承于它的 //UIButton 实例化 类方法实例化 //实例化时没有位置及大小 ...
- C语言递归,非递归实现翻转链表
翻转链表作为,链表的常用操作,也是面试常遇到的. 分析非递归分析: 非递归用的小技巧比较多,很容易出错. 递归分析比较简单,在代码里面 代码: #include<stdio.h> #inc ...
- (转载)SQL去除回车符,换行符,空格和水平制表符
http://www.cnblogs.com/insus/p/4815336.html MS SQL去除回车符,换行符,空格和水平制表符,参考下面语句,一般情况是SQL接受富文本或是textarea的 ...
- mysql中boolean类型
MYSQL保存BOOLEAN值时用1代表TRUE,0代表FALSE,boolean在MySQL里的类型为tinyint(1), MySQL里有四个常量:true,false,TRUE,FALSE, ...
- Spring配置JNDI和通过JNDI获取DataSource
一.SpringJNDI数据源配置信息 <bean id="dataSource" class="org.springframework.jndi.JndiObje ...
- 烂泥:haproxy与nginx、zabbix集成
本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb. 昨天介绍了haproxy的手机匹配规则,今天再来介绍下haproxy与nginx.za ...
- XML 序列化与反序列化
XML序列化与反序列化 1.将一个类转化为XML文件 /// <summary> /// 对象序列化成XML文件 /// </summary> /// <param na ...
- Nodejs以后台服务启动
1: 从网上查找 LINUX中我们可以使用这种简单的方式让node.js在后台运行: nohup node your_app.js & 经多次实验一直没有成功 2:使用 forever ...
- EF6 Create Different DataContext on runtime(运行时改变连接字符串)
引言 在使用EF时,有时我们需要在程序运行过程中动态更改EF的连接字符串,但不幸的时EF是否对 ConfigurationManager.RefreshSection("xxx" ...