在Meteor 0.8.0(Blaze)中使用帮助器/模板实现条件的最简洁方法

时间:2014-04-01 16:51:30

标签: javascript meteor

在Meteor 0.7及更早版本中,我有一个广义的条件#withif块帮助器,它结合了#if#with块帮助器:它呈现了一些内容,其中数据上下文设置为对象中的问题何时存在,如果它不存在,则使用默认数据上下文:

Handlebars.registerHelper "withif", (obj, options) ->
  if obj then options.fn(obj) else options.inverse(this)

模板中的用法如下所示,其中doc有一个字段foo

{{#withif doc}}
    {{> doSomethingWith foo}}
{{else}}
    Document doesn't exist!
{{/withif}}

在Meteor 0.8中,这似乎是much more convoluted to do。基本上,我希望这个块帮助器在UI.contentblockUI.elseblock之间进行选择,并根据引用的对象是否存在于上下文中来适当地设置数据上下文。什么是最干净的方法?

我知道我可以将其解构为

{{#if this}}
    {{> UI.contentBlock this}}
{{else}}
    {{> UI.elseBlock}}
{{/if}}

然而,我在Meteor 0.7及更早版本中避免了这种情况,因为与上面的助手相比,不必要的性能损失。如果可以证明Blaze中的速度没有变慢,我会很乐意坚持下去(我知道Blaze会生成渲染代码)。

0 个答案:

没有答案