课程表

Ember.js 基础

Ember.js 对象模型

Ember.js handlebars模板

Ember.js 路由

Ember.js 组件

Ember.js 控制器

Ember.js 模型

Ember.js 测试

工具箱
速查手册

handlebars遍历标签

当前位置:免费教程 » JS/JS库/框架 » Ember.js

采用与上一章节一样的方法,使用 ember generate route handlebars-each 命令创建了一个路由文件和一个对应的模板文件。 这一篇将为你介绍遍历标签,数组的遍历几乎在任何的常用的开发语言中都能看到,也是使用非常广泛的一个功能。下面我将为大家介绍handlebars的遍历标签,其使用方式与EL表达式几乎是一样的。我想你看一遍下来肯定也能明白了……废话少说,下面直接上演示代码吧!!

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

如上述所示,在route类里构建了一个用于测试的对象数组,每个对象有2个属性(nameage)。 下面是显示数据的模板:

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

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

run result

提醒:记得此时运行的URL是刚刚新建的route。 操作数组的时候注意使用官方建议的方法(如,新增使用pushObject而不是push),请看前面的文章

1,访问数组下标

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

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

不过这个下标是从0开始的,且你还不能想jstl中的forEach标签可以这样写{{index+1}}handlebars不允许这么写!如果你想改成从1开始那么可以使用helper实现。正如网友@吧台丶香槟所说的方法。有关helper请看Ember.js 入门指南之十八工具类的助手

2,空数组处理

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

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

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

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

最后感谢的@吧台丶香槟建议。

转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号