我一直在尝试Meteor,遇到了一些我无法弄清楚的事情。为了好玩,我试图制作一台老虎机。我有以下HTML:
<div class="slot-wrapper">
{{> slot}}
{{> slot}}
{{> slot}}
</div>
<template name="slot">
<div class="slot">
<div class="number"><span>{{ number }}</span></div>
<div class="divider"></div>
</div>
</template>
我希望每个插槽都有一个不同的数字。是否可以将变量传递到模板中?类似于以下内容:
<div class="slot-wrapper">
{{> slot 1}}
{{> slot 2}}
{{> slot 3}}
</div>
<template name="slot">
<div class="slot">
<div class="number"><span>{{ number i}}</span></div>
<div class="divider"></div>
</div>
</template>
也许我想错了,有更好的办法。
9条答案
按热度按时间tpxzln5u1#
前面的所有答案都是多余的或过时的。下面是如何直接从HTML+空格键代码将静态参数传递到模板中,从Meteor 0.8.x开始:
你所要做的就是在
{{> template}}
包含调用中传递key="value"
参数:在Spacebars Secrets: Exploring Meteor Templates了解更多信息。
如果你想将调用者模板的数据传递给子模板/嵌套模板/调用模板,下面是如何做到这一点:不传递任何内容。相反,从嵌套模板中访问父数据上下文
../
:jc3wubiy2#
原来还有别的办法。
我试图通过谷歌搜索各种搜索来找出如何做到这一点,并找到了这个问题,但没有适合我的目的。TomUnite的答案有效,除非你想把嵌套模板放在父模板的不同地方。
所以在我搜索了很久之后,我在meteor的代码库中找到了一个答案。(不是说这是一个确定的答案,但它确实有效)
正如你所看到的,我们可以以任何顺序指定模板示例。第二个参数实际上是一个应该定义的变量,所以:
这可以通过一个循环或使用slots对象上的underscore.js函数_.extend来制作成更简洁的代码。此外,我们可以将多个数据字段传递到这些对象中。
wfveoks03#
我想留下这个作为评论,因为它只是对Joc的答案的澄清,但不能,所以这里是加上我工作的例子。
只能向模板传递一个参数:
此参数必须是一个对象,例如:
参数值可以通过它们的键访问,并且可以切换范围以获取具有
{{#with numberComposite}}
下面是示例的完整代码:
< html文件>
〈javascript文件〉
输出:
ugmeyewa4#
更好的答案:
在新的Blaze布局下,有两种解决方案可用于使模板上下文敏感:
1)直接向模板传递参数
2)在模板中使用理解上下文的帮助器。像这样调用帮助器:
然后呢
7fhtutme5#
这就是我所做的来实现它。我是相当新的流星,所以可能有一个更好的方法:
Slot.html:
Slot.js:
希望这对你有帮助!
9njqaruj6#
我通常使用这两个Handlebars助手:
你可以这样使用它(假设你有一个名为
menuItem
的模板):或者在迭代中(假设你有一个名为
userProfile
的模板):使用空格键,您可以实现类似的行为。在
partial.js
中:在
partial.html
中:这样使用它:
希望它能起作用。
mec1mxoz7#
当只传递一个参数时,使用
this
。不需要javascript。如果你需要的不仅仅是一个参数,试试Dan的方法。
sshcrbum8#
此信息已过时,Blaze布局引擎的参数传递详细说明如下:https://www.discovermeteor.com/blog/spacebars-secrets-exploring-meteor-new-templating-engine/
kpbwa7wx9#
这里有很多好的信息。我的具体情况是我还想传入一些模板数据。
我想让子Blaze组件可重用,所以所有的数据都必须传入。举个例子,假设这个组件显示了一个等级(即A,B,C等)。在一个页面上,我想使用该组件两次:你的成绩和你同学的平均成绩。
这是子组件...
Grade.html
标题可以硬编码在父,但成绩来自数据库。这里是我如何编码的父…
GradePage.html
GradePage.js(在真实的生活中,它是响应式的,但在这里进行了简化)
子组件根本不需要去获取它的值,就是这样。