Handlebar.js自定义IF助手

时间:2014-05-27 17:43:54

标签: handlebars.js

我需要编写一个自定义手柄助手来检查查询参数,或者显示一个字段,或者不依赖。

不幸的是,它会向视图返回true或false并输出它,而不是评估true并显示if或false中的字段,而不显示任何内容。

非常欢迎任何帮助。

{{#sortedByDeals}}
  <span class="deal-percentage">( {{ percent_off }} &#37; OFF ds:   {{ deal_score }})</span>  
{{/sortedByDeals}}


  Handlebars.registerHelper('sortedByDeals', function() {
    console.log("helper method called")
    var sortBy = getURLParameter('sort_by');
    if(sortBy === "deals") { 
      console.log("true")
      return true
    } else {
     return false
    }

  });

2 个答案:

答案 0 :(得分:0)

通过阅读文档http://handlebarsjs.com/block_helpers.html#conditionals来回答我自己。

  Handlebars.registerHelper('if', function(conditional, options) {
    // console.log("helper method called")
    console.log(conditional)

    var sortBy = getURLParameter('sort_by');
    if(sortBy === "deals") { 
      // console.log("true")
      return options.fn(this);
    } else {
      // console.log("else")
     return options.inverse(this);
    }
  });

并在模板中

  {{#if sortedByDeals}}
    <span class="deal-percentage">( {{ percent_off }} &#37; OFF ds:   {{ deal_score }})</span>  
  {{/if}}

答案 1 :(得分:0)

基本块助手无需使用条件助手即可工作。查看更多here

  Handlebars.registerHelper('sortedByDeals', function() {
    console.log("helper method called")
    var sortBy = getURLParameter('sort_by');

    if(sortBy === "deals") { 
      return options.fn(this);
     }else {
      return options.inverse(this);
     }
  });

在模板中,

{#sortedByDeals}}
   <span class="deal-percentage">...</span>  
{{/sortedByDeals}}