Ember.js中的把手助手

我一直试图让一个看起来很简单的Handlebars助手到位,这样我就可以将一个元素标记为{{each}}块中的活动元素,如果它的ID与所选元素相匹配的话。

这里有一个尝试使用我在网上找到的一些帮手。

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

我的一个朋友也有一个更多'手把路'尝试的小提琴。

所以,在每个人都告诉我将我的元素包装在视图中并使用didInsertElement或其他东西之前,让我问一下我的实际问题:在这种情况下,是否存在ember中的handle帮助器? 我的帮手正在期待一个值,它正在得到一个字符串。 那是预期的行为?


看起来这是正常的行为,

你可以尝试如下所示:

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/

Ref1:https://github.com/emberjs/ember.js/blob/master/packages/ember-handlebars/lib/helpers/debug.js Ref2:http://handlebarsjs.com/block_helpers.html


registerHelper ,它将绑定字符串而不是实际值传递给函数。 所以你可以使用getPath来获得实际的值。 无论如何,我同意这种行为似乎“不自然”。 我猜想使用绑定字符串的原因是为了自动更新工作。

链接地址: http://www.djcxy.com/p/61583.html

上一篇: Handlebars helpers in Ember.js

下一篇: How to get index in Handlebars each helper?