2015-10-24 6 views
1

Я хочу отображать разные HTML в зависимости от состояния.Как сравнить значение в рулях?

Это, похоже, не сравнивает эти два значения и всегда показывает первый вариант. Как я могу сравнить предопределенные значения с исходным значением из JSON так, чтобы он мог выполняться правильно?

{{#each this}} 
    {{#each visits}} 
    <div class="row"> 
     {{#if variable_from_json }} 
     <div class="col-lg-2 col-md-2 col-sm-2"> 
      <i class="fa fa-home"></i> 
     </div> 
     {{else}} 
     <div class="col-lg-2 col-md-2 col-sm-2"> 
      <i class="fa fa-plus symbol-hospital"></i> 
     </div> 
     {{/if}} 
    </div> 
    {{/each}} 
{{/each}} 

JS код

Handlebars.registerHelper('if', function (variable_from_json, options) { 
    if (variable_from_json === "M") { 
     return options.fn(this); 
    } else { 
     return options.inverse(this); 
    } 
}); 

ответ

1

Для сравнения значений, как ==,> = || , & & Создание одного помощника, который будет обрабатывать все случаи

Handlebars.registerHelper("when",function(operand_1, operator, operand_2, options) { 
    var operators = { 
    'eq': function(l,r) { return l == r; }, 
    'noteq': function(l,r) { return l != r; }, 
    'gt': function(l,r) { return Number(l) > Number(r); }, 
    'or': function(l,r) { return l || r; }, 
    'and': function(l,r) { return l && r; }, 
    '%': function(l,r) { return (l % r) === 0; } 
    } 
    , result = operators[operator](operand_1,operand_2); 

    if (result) return options.fn(this); 
    else return options.inverse(this); 
}); 

Используйте этот оператор в рул файла Для например. == Оператор

{{#when <operand1> 'eq' <operand2>}} 
    // do something here 
{{/when}} 
+0

Не работает. – xxCodexx

+0

@HasmitRajput может проверить его снова. Я изменил формат –

Смежные вопросы