文档章节

Ember.js 入门指南——handlebars遍历标签

ubuntuvim
 ubuntuvim
发布于 2015/09/16 00:31
字数 776
阅读 540
收藏 0

本系列文章全部从(http://ibeginner.sinaapp.com/)迁移过来,欢迎访问原网站。

采用与上一篇文章一样的方法,使用 ember generate route handlebars-each 命令创建了一个路由文件和一个对应的模板文件。

       这一篇将为你介绍遍历标签,数组的遍历几乎在任何的常用的开发语言中都能看到,也是使用非常广泛的一个功能。下面我将为大家介绍handlebars的遍历标签,其使用方式与EL表达式几乎是一样的。我想你看一遍下来肯定也能明白了……废话少说,下面直接上演示代码吧!!

//  app/routes/handlebars.js
 
 
import Ember from 'ember';
 
/**
 * 定义一个用于测试的对象数组
 */
export default Ember.Route.extend({
       //  重写model回调函数,初始化测试数据
    model: function() {
              return [
                     Ember.Object.create({ name: 'chen', age: 25}),
                     Ember.Object.create({ name: 'i2cao.xyz', age: 0.2}),
                     Ember.Object.create({ name: 'ibeginner.sinaapp.com', age: 1}),
                     Ember.Object.create({ name: 'ubuntuvim.xyz', age: 3})
              ];
       }
});

如上述所示,在route里构建了一个用于测试的对象数组,每个对象有2个属性(nameage)。

下面是显示数据的template

<!-- // app/templates/handlebars.hbs -->
 
{{! 遍历在route里设置的对象数组 }}
<ul>
       {{#each model as |item|}}
              <li>Hello everyone, My name is {{item.name}} and {{item.age}} year old.</li>
       {{/each}}
</ul>

有没有似曾相似的感觉呢!!跟EL表达式的forEach标签几乎是一样的。不出意外你应该可以看到如下的结果。

提醒:记得此时运行的URL是刚刚新建的route

操作数组的时候注意使用官方建议的方法(如,新增使用pushObject而不是push),请看前面的文章


1,访问数组下标

有些情况我们可能需要获取数组的下标,比如有些时候可能会下标作为数据的序号。请看下面的演示:

<!-- // app/templates/handlebars.hbs -->
 
{{! 遍历在route里设置的对象数组 }}
<ul
       {{#each model as |item index|}}
              <li>{{index}} Hello everyone, My name is {{item.name}} and {{item.age}} year old.</li>
       {{/each}}
</ul>

不过这个下标是从0开始的,且你还不能想jstl中的forEach标签可以这样写{{index+1}}handlebars不允许这么写!暂时还不知道有没有类似的解决办法……

2,空数组处理

each标签内还可以使用{{else}},当数组为空的时候就会执行else代码块。

{{! 空数组处理,如果从route返回的model为空,则会执行else代码块的代码 }}
{{#each model as |item|}}
       Hello, {{item.name}}
{{else}}
       Sorry, nobody is here.
{{/each}}

为了测试效果,请把app/routes/handlebars.jsreturn语句改成“return []”。此时返回到模板上的是一个空数组,结果也和预期的一致,页面显示的是”Sorry, nobody is here.”

 

       上述的内容就是handlebarseach遍历使用实例。应该也是没什么难度的……


© 著作权归作者所有

ubuntuvim
粉丝 33
博文 76
码字总数 98477
作品 1
深圳
后端工程师
私信 提问
Ember.js 入门指南——总目录

Ember.js 是什么?我想对于想学习它的人应该知道它是个什么东西,如果你想了解那就赶紧去 Google 或者百度,本系列教程是通过学习官网教程然后摘抄个人觉得比较重要的部分,加上学习实例整合...

ubuntuvim
2015/10/25
1K
2
Ember.js 入门指南--目录

本系列文章全部从(http://ibeginner.sinaapp.com/)迁移过来,欢迎访问原网站。 Ember.js 是什么?我想对于想学习它的人应该知道它是个什么东西,如果你想了解那就赶紧去 Google 或者百度,...

ubuntuvim
2015/09/07
389
2
Ember.js 入门指南——handlebars条件表达式

本系列文章全部从(http://ibeginner.sinaapp.com/)迁移过来,欢迎访问原网站。 handlebars模板提供了与一般语言类似的条件表达式,比如if、if……else……。 在介绍这些条件表达式之前,我...

ubuntuvim
2015/09/13
1K
0
Ember.js 入门指南——handlebars属性绑定

本文从http://www.ibeginer.sinaapp.com迁移过来,欢迎访问原页面。 简单讲属性绑定其实就是在HTML标签内(是在一个标签的”<”和“>”中使用)直接使用handlebars表达式。可以直接用handleb...

ubuntuvim
2015/09/16
765
0
Ember.js 入门指南——{{link-to}} 助手

如果你不是从前面的文章看下来的你可能需要使用Ember CLI构建一个Ember项目,在Ember CLI的官网与非常详细的解释教程,不过如果你只是为了构建一个Ember项目的框架你只需要三步就可以构建。 ...

ubuntuvim
2015/09/19
2.5K
2

没有更多内容

加载失败,请刷新页面

加载更多

mysql-connector-java升级到8.0后保存时间到数据库出现了时差

在一个新项目中用到了新版的mysql jdbc 驱动 <dependency>     <groupId>mysql</groupId>     <artifactId>mysql-connector-java</artifactId>     <version>8.0.18</version> ......

ValSong
今天
5
0
Spring Boot 如何部署到 Linux 中的服务

打包完成后的 Spring Boot 程序如何部署到 Linux 上的服务? 你可以参考官方的有关部署 Spring Boot 为 Linux 服务的文档。 文档链接如下: https://docs.ossez.com/spring-boot-docs/docs/r...

honeymoose
今天
6
0
Spring Boot 2 实战:使用 Spring Boot Admin 监控你的应用

1. 前言 生产上对 Web 应用 的监控是十分必要的。我们可以近乎实时来对应用的健康、性能等其他指标进行监控来及时应对一些突发情况。避免一些故障的发生。对于 Spring Boot 应用来说我们可以...

码农小胖哥
今天
8
0
ZetCode 教程翻译计划正式启动 | ApacheCN

原文:ZetCode 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 学习资源 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 ...

ApacheCN_飞龙
今天
5
0
CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部