Comment changeriez-vous le code suivant pour le faire fonctionner? Le problème est l’expression this == ‘some message’:
{{#each errors}} {{#if (this == 'some message') }} - Status
{{else}} - {{this}}
{{/if}} {{/each}}
Le plus simple serait d’append un assistant if_eq
personnalisé:
Handlebars.registerHelper('if_eq', function(a, b, opts) { if(a == b) // Or === depending on your needs return opts.fn(this); else return opts.inverse(this); });
puis ajustez votre modèle:
{{#if_eq this "some message"}} ... {{else}} ... {{/if_eq}}
Démo: http://jsfiddle.net/ambiguous/d4adQ/
Si vos entrées d’ errors
n’étaient pas des chaînes simples, vous pourriez leur append les indicateurs “is this some message” et utiliser un standard {{#if}}
(notez que l’ajout d’une propriété directement à une chaîne ne fonctionnera pas correctement):
for(var i = 0; i < errors.length; ++i) errors[i] = { msg: errors[i], is_status: errors[i] === 'some message' };
et:
{{#if is_status}} Status {{else}} {{msg}} {{/if}}
Ancienne question, mais si vous utilisez la bibliothèque d’aide de Swag Handlebars d’ Elving, vous pouvez utiliser les helpers is
et isnt
.
Cela peut également être réalisé en utilisant des sous- expressions de guidon.
Modèle –
Javascript –
var errors = [ 'Where is pancakes house?', 'some message', 'One cent stamp' ]; Handlebars.registerHelper('is_status', function(msg, matchMsg, options) { if(msg === matchMsg) return true; else return false; }); var tmplStatus = Handlebars.comstack($('#tmplStatus').html()), domStatus = tmplStatus({ errors: errors }); $('body').append(domStatus);
Démo de travail: http://jsfiddle.net/techgeeek/b99qwtpw/