如果equals在每个循环内的handlebar模板中验证

时间:2015-10-13 07:19:19

标签: javascript php handlebars.js

我有像这样的php数组

bookings[] = {"arrived","cancelled","departed"};

当在把手模板中显示此数组时,我想检查IF等条件。

在以下示例中,当值等于取消时,我想显示一些文本。

{{#each bookings}}
    {{#if this.value cancelled}}
        cancelled
    {{/if}}
{{/each}}

此代码无效。什么是替代IF等于把手在循环中执行的条件。

2 个答案:

答案 0 :(得分:3)

现在我的代码正常运作,

bookings = ["arrived", "cancelled", "departed"];

车把功能:

 Handlebars.registerHelper('check_status', function(val1, val2) {
    return val1 === val2;
 });

车把模板:

 {{#if (check_status this 'cancelled')}} 

答案 1 :(得分:1)

如果我没弄错,你不能在把手中做一个实际的条件,你只能做if true/false这意味着**value**中的{{#if **value**}}需要为真或者假

所以你想要做的是在代码区域this.value被定义创建一个像这样的函数

valueIsCancelled =  function(value) {
  return value === 'cancelled';
}

在您的模板中,您将执行以下操作:

        {{#each bookings}}
         {{#if this.valueIsCancelled this.value}}
               cancelled
         {{/if}}
        {{/each}}  

或另一个选项是定义另一个变量,其中定义了一个布尔值

var isCancelled = value === 'cancelled';

,您的模板看起来像这样

        {{#each bookings}}
         {{#if this.isCancelled}}
               cancelled
         {{/if}}
        {{/each}}