3.4 Templates -- Displaying A List of Items(展示一个集合)
一、 概述
1. example
如果你需要遍历一个对象集合,使用Handlebars的{{#each}}。
<ul>
{{#each people key="id" as |person|}}
<li>Hello, {{person.name}}!</li>
{{/each}}
</ul>
上面的例子将会输出这样的结果:
<ul>
<li>Hello, Yehuda!</li>
<li>Hello, Tom!</li>
<li>Hello, Trek!</li>
</ul>
2. {{#each}}是绑定的。如果你的app添加了一条新数据,或者删除了一条,不用重写任何代码DOM就会被更新。
注意[].push()不会更新{{each}}。
添加多条目需要使用[].pushObject,这关系到Ember可变数组的方法,所以Ember可以监视这个改变。
二、Specifying Keys(指定键)
如果数组使用{{each}}遍历,key选项被用来告诉Ember怎样判断在渲染之间已经改变。
通过帮助Ember检测数组中一些相同的元素,DOM元素可以被重用,这样大大提高了渲染速度和防止一些意外的结果。
例如,{{each}}它的key设置为id: handlebars {{#each people key="id" as |person|}} {{/each}},当这个{{#each}}被重新渲染的时候,Ember将基于每个项目的id属性匹配先前被呈现的项目(排序生成的DOM元素)。
这里有一些特殊的值:
- key:* @index指的是数组中该item的index。
- * @item指的是数组中该item自己。这仅仅可以被用作string或者numbers数组。
- * @guid指的为每一个对象生成唯一的标识符(Ember.guidFor)。
三、 Empty Lists(空集合)
{{#each}}还可以匹配{{else}}。
example: 如果集合是空的内容将会被渲染。
{{#each people key="id" as |person|}}
Hello, {{person.name}}!
{{else}}
Sorry, nobody is here.
{{/each}}
3.4 Templates -- Displaying A List of Items(展示一个集合)的更多相关文章
- Ember.js学习教程 -- 目录
写在前面的话: 公司的新项目需要用到Ember.js,版本为v1.13.0.由于网上关于Ember的资料非常少,所以只有硬着头皮看官网的Guides,为了加深印象和方便以后查阅就用自己拙劣的英语水平把 ...
- Xamarin.Forms 简介
An Introduction to Xamarin.Forms 来源:http://developer.xamarin.com/guides/cross-platform/xamarin-forms ...
- 不用asp.net MVC,用WebForm照样可以实现MVC(请看最后一句话)
在<避开WebForm天坑,拥抱ASP.Net MVC吧>这篇博客中我讲到了ASP.net WebForm由于一些先天的“诱导犯罪”的缺陷,现在用ASP.net MVC的公司越来越多.但是 ...
- [译] ASP.NET 生命周期 – ASP.NET 上下文对象(五)
ASP.NET 上下文对象 ASP.NET 提供了一系列对象用来给当前请求,将要返回到客户端的响应,以及 Web 应用本身提供上下文信息.间接的,这些上下文对象也可以用来回去核心 ASP.NET 框架 ...
- 【转】http://www.cnblogs.com/yuzukwok/p/3884377.html
来自:http://www.cnblogs.com/yuzukwok/p/3884377.html An Introduction to Xamarin.Forms 来源:http://develop ...
- 不用asp.net MVC,用WebForm照样能够实现MVC
在<避开WebForm天坑,拥抱ASP.Net MVC吧>这篇博客中我讲到了ASP.net WebForm由于一些先天的"诱导犯罪"的缺陷,如今用ASP.net MVC ...
- day06 字典、元组、set的方法及常用操作
今日内容: 1.深浅拷贝 2.元组 3.字典 4.set 1.深浅拷贝 # 1.值拷贝 # 采用赋值的方法进行 # 只会将堆区容器变量与栈区的绑定关系进行复制 # 2.浅拷贝 # 会将堆区与栈区的绑定 ...
- Knockout v3.4.0 中文版教程-5-计算监控-使用计算监控
3. 计算监控 1.使用计算监控 如果你有一个监控的属性firstName和另一个lastName,但你想显示全名怎么办? 这就是引入计算监控的原因-这是依赖于一个或多个其他的observables函 ...
- Java EE模式和MVC
Java EE模式 什么是模式? 开发过程中总结出来的约定俗成的"套路". Java EE经历的模式 model1模式 技术组成:JSP+JavaBean model1的弊端:随着 ...
随机推荐
- 第四章 Spring.Net 如何管理您的类___对象的生命周期链
各位,实在不好意思,因为有事,博客几天没更新了.前面有童鞋提到,配置 Objects.xml 路径的相关问题,这些东西是 IResource 接口的一些内容.在下一章会详细介绍. 传统的Net应用中, ...
- ELK5.X使用X-Pack配置密码
一.前言 前面使用ELK5.X+logback搭建日志平台,但是,当访问kibana 时,直接就可以访问了,如果设置登录名和密码,是不是更好呢?答案是肯定的,这里使用X-Pack来配置登录名和密码. ...
- 点击一个textView里的link导航至程序内可返回的自定义webView
1,在AppDelegate.h里定义一个 id currentViewController; 在AppDelegate.m里 @implementation UIApplication (Priva ...
- PyQt4信号与槽
事件 事件(Events)是GUI程序中很重要的一部分.它由用户或系统产生.当我们调用程序的exec_()方法时,程序就会进入主循环中.主循环捕获事件并将它们发送给相应的对象进行处理.奇趣公司(Tro ...
- linux 输入“make"命令不能执行
我用的是VM 虚拟机的CDLinux,我想手动安装网卡驱动.网卡驱动也已经复制到linux 系统中了.接下来应该输入:makemake install可窗口提示:-bash:make :command ...
- poj_2709 贪心算法
poj 2709 painter 题目要求 给定涂料,每套涂料含有3-12种不同的颜色(开始时候给定选用的颜料套的颜色数目),且一套涂料中每种颜色均有50ml.且一套涂料中的任意三种不同的颜色各X m ...
- Angular基础---->AngularJS的使用(一)
AngularJS主要用于构建单页面的Web应用.它通过增加开发人员和常见Web应用开发任务之间的抽象级别,使构建交互式的现代Web应用变得更加简单.今天,我们就开始Angular环境的搭建和第一个实 ...
- Android 7.1 SystemUI--Multi-Window多窗口模式
PhoneStatusBar.java private View.OnLongClickListener mRecentsLongClickListener = new View.OnLongClic ...
- hql 语法与详细解释<转>
HQL查询 HQL查询: Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查询特性 ...
- 【Android】Android内存溢出问题---用自行开辟的空间进行对内存管理
public static Bitmap readBitmap(String path) { BitmapFactory.Options options = new BitmapFactory.Opt ...