如何评估空格键参数中的任意表达式?

How do I evaluate arbitrary expressions in a spacebars argument?

我想说 {{#if tiny || huge}} 之类的话,但看起来空格键只需要一个 truthy 函数。什么是最好的解决方案?

我想我会再写一个助手,但我如何从另一个助手的代码中调用一个助手?例如

Template.foo.helpers({ tiny: function() { return this < 10 },
                       huge: function() { return this > 1000 },
                       tinyOrHuge: function() { return tiny() || huge() } // bzzt!
})

我不想通过复制 tinyhuge 来重写 tinyOrHuge。那不是很干。

是否有编程方式可以按名称访问辅助函数?如果您传入名称,helpers 返回帮助器,那就太好了。例如。我可以打电话给 Template.foo.helpers('tiny')()。但是我已经查看了这些 Blaze.Template 对象,但没有找到一种方法可以在不访问私有变量的情况下恢复函数,例如Template.foo.__helpers.get('tiny').

这是一个在保留必要上下文的同时重用辅助函数的示例:

var tiny = function() {
  return this < 10;
};

var huge = function() {
  return this > 1000;
};

Template.foo.helpers({
  tiny: tiny,

  huge: huge,

  tinyOrHuge: function() {
    return tiny.call(this) || huge.call(this);
  }
});