在Ember.js的把手帮手

我一直试图让一个看似简单的Handlebars帮助器到位,这样我就可以在{{each}}块中标记一个元素,如果它的ID与所选元素的ID匹配.

这是one attempt使用我在网上找到的帮手.

Handlebars.registerHelper('ifequal', function (val1, val2, fn, elseFn) {
    console.log(val1);
  console.log(val2);
  if (val1 === val2) {
    return fn();
  } else if (elseFn) {
    return elseFn();
  }
});

我的一个朋友也有一个more ‘Handlebars-way’ attempt的小提琴.

所以在每个人都告诉我将我的元素包装在一个视图中并使用didInsertElement之类之前,让我问一下我的实际问题:在这个实例中,emblebars helper是否在ember中被破坏了?我的助手期待一个值,它正在得到一个字符串.这是预期的行为吗?

最佳答案 看起来这是正常的行为,

您可以尝试以下方式:

var getPath = Ember.Handlebars.getPath;
Handlebars.registerHelper('ifequal', function (val1, val2, options) {
  var context = (options.fn.contexts && options.fn.contexts[0]) || this;
  var val1 = getPath(context, val1, options.fn);
  var val2 = getPath(context, val2, options.fn);
  console.log(val1);
  console.log(val2);
  if (val1 === val2) {
    return options.fn(this);
  } else{
    return options.inverse(this);
  }
});

小提琴:http://jsfiddle.net/73wtf/28/

参考1:https://github.com/emberjs/ember.js/blob/master/packages/ember-handlebars/lib/helpers/debug.js
参考2:http://handlebarsjs.com/block_helpers.html

点赞