列表渲染
v-for
template v-for
数组变动检查
变异方法
替换数组
track-by
track-by $index
问题
对象 v-for
值域 v-for
显示过滤/排序的结果
1、v-for指令 是基于一个 数组 渲染列表。这个指令使用特殊的语法 ,形式为 item in items,items是数组数据,item是当前数组元素的别名。

另一种循环方式 为索引制定一个别名。

还一个是v-for=。。。of。。。

2、template v-for 模板便利
用于渲染一个包含多个元素的块。
3、变异方法。
vue.js包装了被观察数组的变异方法,故他们能触发视图更新。被包装的方法有:
push();尾部添加,返回新长度
pop();尾部删除,返回新长度。
shift();删除并返回数组的第一个元素。
unshift();在头部添加一个元素,返回长度
splice()
例如Vm.items.name(message:'bazz');

filter过滤

4、track-by 优化已有的。
有时候需要全新对象(例如通过API调用创建的对象)替换数据。
因为v-for默认通过数据的特征来决定对已有作用于和DO没元素的复用程度,这可能导致重新渲染整个列表。但是,如果每个对象都有一个唯一ID得属性,
便可以使用track-by特性给Vue.js一个提醒,vue.js因为能尽可能的复用已有实例。
例子:
如果vue.js遇到一个包含_uid:‘88f869d’的新对象,
它知道它可以服用这个已有对象的作用域和DOM元素。
 
简单的讲,就是v-for遍历model时,vue.js会建立索引,这个索引要求是不重复,不然会出错,track-by=“_uid”,使用者制定索引是哪个部分。

track-by $index
track-by=‘$index’,它强制让v-for进入原位更新模式:
片断不会被移动,而是简单的以对应索引的新值刷新。这种模式也能处理数据数组中重复的值。
但是这种模式下,dom节点不在映射数组元素的顺序的改变,也不能同步临时状态如input输入的值及组建的私有状态。因此如果v-for包含input元素或者子组件,要小心使用track-by=“$index”;

5、vue.js不能做到的:
(1)不能直接用索引设置元素:vm.item[0]={}; 用$set(索引,’新键名‘,’新值‘);
(2)不能修改数据长度:vm.item.length=0; 用items={};空数组替换
(3)$.remove(item);删除某个数据;

6、v-for不仅可以遍历数组,还可以遍历对象。
v-for遍历数组:索引$index;
v-for遍历对象:索引$key;

同理 也可以给键名$key起一个别名: v-for=“(key , val) in object”;
 
v-for也可以接受一个整数,因此它将重复模板次数。

7、显示过滤/排序结果
不是及修改或重置原始数据,有2方法:
(1)创建一个计算属性,返回过滤/排序的数组;
(2)使用内置的过滤器 filterBy和orderBy。
两者的比较:
计算属性有更好的控制力,也更灵活。因为他是全功能javascript。
过滤器使用方便。

filterBy和orderBy:

 
 
 
 
 

vue.js 第八课的更多相关文章

  1. vue.js第六课

    class与style绑定 绑定HTML class 对象语法 数组语法 绑定内联样式 对象语法 数组语法 自动添加前缀 1.class与style绑定. 数据绑定一个常见需求就是 操作元素的clas ...

  2. vue.js 第五课

    计算属性 1.基础例子 2.计算属性 vs $watch 3.计算 setter 4.计算属性开发实务demo   1.计算属性 computed( 电脑computer) (区别普通属性) 计算属性 ...

  3. vue.js 第四课

    (1).插值:在view层上显示model的资料. (2).绑定表达式:在view层上 执行js命令. (3).指令:在view层上 执行写好的功能. (4).缩写:v-bind 绑定 特性 v-on ...

  4. vue.js 第三课

    1.构造器 constructor 2.属性和方法 properties methods 3.实例生命周期 instance_lifecycle   1.vue.js都是通过 var vm=new V ...

  5. Vue.js入门第一课

    这个好像比ANGULAR.JS要轻量一些,看看. <!DOCTYPE html> <html> <head> <meta charset="utf- ...

  6. vue.js第七课

    条件渲染 v-if template v-if v-show v-else v-if 与 v-show   handlebars.js 1.v-if 如果我们想一次 控制 多个元素呢? 我们可以吧一个 ...

  7. vue.js 第十课-第十六课

    第十课: http://note.youdao.com/noteshare?id=25b5ba45286464856f21eb4b6b391ecd&sub=19C4429995384F72BD ...

  8. vue.js学习(第一课)

    学习资料 来自台湾小凡! vue.js是javascript的一个库,只专注于UI层面,核心价值永远是 API的简洁. 第一课: 不支持IE8. 1.声明式渲染: el元素的简称 element : ...

  9. Python学习二十八周(vue.js)

    一.指令 1.一个例子简单实用vue: 下载vue.js(这里实用1.0.21版本) 编写html代码: <!DOCTYPE html> <html lang="en&qu ...

随机推荐

  1. 题解 UVA1335 【Beijing Guards】

    UVA1335 Beijing Guards 双倍经验:P4409 [ZJOI2006]皇帝的烦恼 如果只是一条链,第一个护卫不与最后一个护卫相邻,那么直接贪心,找出最大的相邻数的和. 当变成环,贪心 ...

  2. Nginx的相关介绍

    前言 说到服务器,一定会想到apache的httpd和Nginx Apache的发展时期很长,而且是毫无争议的世界第一大服务器.它有着很多优点:稳定.开源.跨平台等等.它出现的时间太长了,它兴起的年代 ...

  3. auto_prt的VS版本源码剖析

    通过对VC版本的auto_ptr的源代码得知VC版本还有一点小缺陷,又对VS版本的auto_ptr做了一些剖析,具体代码和注释如下: //假设全局pa2都是用pa1来构造 //如:pa2(pa1).p ...

  4. no module named系列问题解决

    持续更新中~~~ 1.终端指令错误:no module named 'gdbm' 解决办法: sudo apt-get install python3.6-gdbm 2.终端无法定位软件包 解决办法: ...

  5. opencv:霍夫直线检测

    #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace st ...

  6. [爬坑记录] Qt 代码卡住 不发信号 不触发槽

    先让我激动一会儿 [捂脸] 最近在用Qt做个程序 用来参加比赛 期间总共遇到两次如标题的问题 也即是 莫名其妙的不触发槽函数了 而且原因也不一样 {先说明 我学习Qt依旧只是入门级 也许入不了大佬法眼 ...

  7. Object 反射 List

    public static object DeserializeModel<T>(object dataModel) { Type type = typeof(T); Object ent ...

  8. Git提交时提示“Please make sure you have the correct access rights and the repository exists.”的解决方法

    1.首先打开Git Bash设置名字和邮箱: git config --global user.name "你的名字" git config --global user.email ...

  9. svn还原与本地版本回退

    今天遇到了一个情况,由于没及时更新,对整个项目进行了Ctrl+shift+O,提交代码时冲突:然后就先还原项目,导致之前没有冲突的代码也回退了.然后就在eclipse中获取本地的版本记录,并回退 具体 ...

  10. Text Infilling解读

    多头自注意力token解码器,该解码器能够对过去和未来的信息进行condition处理,适合填充任务:自注意力机制尤其适合填充文本,因为它可以为每个空白处从左到右及从右到左双向建模,为全部语义进行有效 ...