1

在带来大火的 Meteor 0.8 之前,我能够将对象传递给自定义块助手内容,如下所示:

return options.fn(object)

现在有了 blaze,块助手需要返回一个类似这样的模板。

return Template.someTemplate

我怎样才能实现旧的行为。我想要的是以下内容:

我使用块助手

{{#blockhelper argument="something"}}
   {{somePartOfTheObject}}
{{/blockhelper}}

然后在 blockhelper 定义中,我想根据参数做一些事情,这将返回一个对象。

UI.registerhelper "blockhelper", () ->
   object = getStuffFrom(this.argument)
   return Template.someTemplate(object)

根据 blaze 的需要,我创建了一个最小的模板

<template name="someTemplate">
    {{> UI.contentBlock}}
</template>

现在 blaze 不允许将对象传递给此模板,因此可以在块内容中使用它。

我怎样才能解决这个问题?

我知道流星方式是在控制器中获取对象。但由于我想将其用于原型设计框架,我希望能够直接从 blockhelper 创建所述对象或多个对象,因此有人可以传递将转换为对象的参数。

4

1 回答 1

1

解决方案非常简单。

如果我有帮手:

UI.registerhelper "blockhelper", () ->
   object = getStuffFrom(this.argument)
   return Template.someTemplate

帮助器的变量和对象实际上在模板中是可用的。所以你只需这样做:

<template name="someTemplate">
    {{> UI.contentBlock object}}
</template>
于 2014-05-26T11:26:54.353 回答