【问题标题】:Retaining logicless templates while using conditionals in Handlebars在 Handlebars 中使用条件时保留无逻辑模板
【发布时间】:2023-04-07 05:39:01
【问题描述】:

我正在使用Handlebars 库为我的网站制作模板。但是,因为模板应该是无逻辑的,所以基本的布尔逻辑(例如,基于小于检查打印红色或绿色的 div)在不求助于黑客的情况下是很困难的。如何在不向模板添加逻辑的情况下解决此类问题?

【问题讨论】:

    标签: handlebars.js template-engine


    【解决方案1】:

    无逻辑并不意味着你根本不能使用逻辑,它只是意味着你不能在模板中使用逻辑。 在将数据传递给模板之前,您应该准备好所有数据。

    例如,考虑一个 MV* 应用(如 Backbone 驱动的应用)上的这个常见用例:

    型号:

    {
      name: 'Roger',
      age: 50
    }
    

    查看:

    ...
    getTemplateData: function (model) {
      var data = model;
    
      if (model.age >= 50) {
        data.isTooOld= true;
      }
    
      return data;
    }
    ...
    render: function () {
      var data = this.getTemplateData(model) || {};
      this.el.innerHTML = this.template(data);
    }
    ...
    

    模板:

    <p>
      OK, {{name}},
      {{#if isTooOld}}
        you're too old for this shit!
      {{else}}
        let's do this!
      {{/if}}
    </p>
    

    【讨论】:

    • 感谢您的精彩回答!下次我会用这个,到目前为止我一直在注册自定义处理程序以使其工作,这似乎好多了!
    猜你喜欢
    • 1970-01-01
    • 2013-09-28
    • 2013-06-19
    • 2013-07-04
    • 2012-12-14
    • 1970-01-01
    • 1970-01-01
    • 2012-11-24
    • 2011-05-13
    相关资源
    最近更新 更多