ember.js - How do I translate #if type handlebars helpers from ember 1.7 to ember-cli (2.3) -
i have registered handlebars helper in ember1.7 right now.
var = ember.handlebars.get; ember.handlebars.registerhelper('ifcond', function(val1, val2, options) { var context = (options.fn.contexts && options.fn.contexts[0]) || this; var val1 = get(context, val1, options.fn); if (val1 == val2) { return options.fn(this); } else { return options.inverse(this); } }); the idea pretty simple: take first parameter context property, second parameter actual value, , return boolean based on equality. so, example, if have property age on object user,
{{#ifcond user.age "22" }} <h2> twin twos!</h2> {{/ifcond}} would snippet use render h2 element when condition fulfilled.
however, cannot figure out how translate such helper ember-cli.
i've considered making component, need conditional, not renders specific set of dom elements. feel i'm missing something. how able make {{#ifcond}} work in ember 2.3?
edit: found helper creation doc let me implementation:
import ember 'ember'; export function ifcond(params/*, hash*/) { return (params[0] === params[1]); // return params; } export default ember.helper.helper(ifcond); however, work, have write (in template)
{{#if (ifcond 1 1)}} yep {{/if}} is there still way use handlebar helper in ember 1.7 ?
first of there no more block helpers:
legacy handlebars helpers removed in favor of ember.helper api. api not provide mechanism helpers take block, introduce support nested helpers can used in concert built-in helpers (like {{#if}} , {{#each}}) achieve same ends.
it recommended use helpers did in example ({{#if (ifcond 1 1)}}). if decide go route recommend using ember-truth-helpers addon. using can throw out own helper , use this:
{{#if (eq user.age "22") }} <h2> twin twos!</h2> {{/if}} i find truth helpers flexible , easy understand , recommend using them.
alternatively if want simulate old helper need use component that, i've made twiddle illustrate how it.
Comments
Post a Comment