zoukankan      html  css  js  c++  java
  • Ember.js 入门指南——handlebars遍历标签

    本系列文章全部从(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遍历使用实例。应该也是没什么难度的……


  • 相关阅读:
    廖雪峰Java10加密与安全-1数据安全-1加密与安全概念
    廖雪峰Java9正则表达式-2正则表达式进阶-6搜索和替换
    廖雪峰Java9正则表达式-2正则表达式进阶-5非贪婪匹配
    (1)结构体问题(哎,困扰很久了)
    5)蟠桃计,但是涉及一个变量初始化位置问题
    4)mysqlDB
    2)header的使用
    )ASCII比较大小
    3)大数相加问题
    2)处理用空格的字符串输入
  • 原文地址:https://www.cnblogs.com/ubuntuvim/p/4811960.html
Copyright © 2011-2022 走看看