• Handlebars模板引擎之高阶


    Helpers


    其实在Handlebars模板引擎之进阶我想说if else的功能的,可是由于这个功能在我的开发中我觉的鸡肋没啥用,就直接不用了。

    因为if else只能进行简单判断,如果条件参数返回 false, undefined, null, "" 或 [](非真的值)时,Handlebars 将不渲染。

    类似这样

    {{#each this}}
      {{#if this.show}}
       
      {{/if}}
    {{/each}}
    

    并不能进行二元的运算,类似这样

    {{#each this}}
      {{#if this.show == 'showtime' }}
       
      {{/if}}
    {{/each}}
    

    所以用的不多,如果有类似上面的二元的话,需要借助Helpers来操作。

    具体来看下用Handlebars是什么东西。

    var myTemplate = Handlebars.compile($("#table-template").html());
    Handlebars.registerHelper("addOne", function(index, options) {
    	return parseInt(index, 10) + 1;
    });
    $('#table tbody').html(myTemplate(data));
    

    注册Helper后,使用

    <td>{{ addOne @index }}</td>
    

    这里我就以上文中,表格序号为引。

    表格需要以0开头应该是很怪,所以我们需要以1开头。如果只是简单的js的话,直接index+1就完事了。但是我们这是模板引擎,我们需要按照她的规则来。

    这里我们就通过Handlebars.registerHelper()注册了一个Helper(上帝之手)。

    然后传递一个helper的名称,一个回调函数,函数中的参数,就是我们注入进去的@index索引值。

    效果:

    更进一部的官方例子:

    <div class="post">
      <h1>By {{fullName author}}</h1>
      <div class="body">{{body}}</div>
    
      <h1>Comments</h1>
    
      {{#each comments}}
      <h2>By {{fullName author}}</h2>
      <div class="body">{{body}}</div>
      {{/each}}
    </div>
    

    模板

    var context = {
      author: {firstName: "Alan", lastName: "Johnson"},
      body: "I Love Handlebars",
      comments: [{
        author: {firstName: "Yehuda", lastName: "Katz"},
        body: "Me too!"
      }]
    };
    
    Handlebars.registerHelper('fullName', function(person) {
      return person.firstName + " " + person.lastName;
    });
    

    结果:

    <div class="post">
      <h1>By Alan Johnson</h1>
      <div class="body">I Love Handlebars</div>
    
      <h1>Comments</h1>
    
      <h2>By Yehuda Katz</h2>
      <div class="body">Me Too!</div>
    </div>
    
  • 相关阅读:
    git rebase解决合并冲突
    Google GMS介绍
    MTK Android修改System分区
    Adb adb push (remote write failed: No space left on device)
    Android Visibility控件显示和隐藏
    MTK Android中设置默认时区
    初级Oracle和SQL学习者的学习笔记。韩顺平-玩转oracle。
    网络知识从零开始一:私有地址。
    oracle中有关用户、角色的一些概念。
    oracle中的一些函数笔记
  • 原文地址:https://www.cnblogs.com/zqzjs/p/6233479.html
Copyright © 2020-2023  润新知