Express 3.0上的HBS模块将文本添加到生成的HTML中
问题描述:
我收到了这个我很困惑的bug。我正在运行一个使用hbs package的手柄模板的Express 3.0.6应用程序。 我试图为每个视图的脚本和样式表创建块,基于this example。Express 3.0上的HBS模块将文本添加到生成的HTML中
由于某种原因,每当我尝试使用助手时,它都会在html文件的顶部添加一些数字(如直接文本)。奇怪的是,这些数字在刷新后会改变,我不知道什么是错误的,甚至不知道怎么回事。
blocks = {}
hbs.registerHelper 'extend', (name, context) ->
block = blocks[name]
if not block
block = blocks[name] = []
block.push(context.fn this)
hbs.registerHelper 'block', (name) ->
val = (blocks[name] || []).join('\n')
blocks[name] = []
return val
在的layout.html:
<head>
{{{block "stylesheets"}}}
{{{block "javascripts"}}}
</head>
在其他观点:
{{#extend "stylesheets"}}
<link ... />
{{/extend}}
{{#extend "javascripts"}}
<script ...
{{/extend}}
在输出HTML,我得到 “1 + 1”。 1的值有时会随机更改,但总是有x个值,其中x是扩展标签的数量。
感谢任何见解/帮助任何人可能会给!
编辑:: 另外,我注意到另一件事是,如果我改变块助手:
{{{stylesheets}}}
{{{javascripts}}}
的数字从1开始,然后不断通过各1我刷新页面时递增。我不确定发生了什么,但希望这会有所帮助。
答
原来在'extend'寄存器帮助器中,coffeescript自动返回了方法的最后一个语句的输出,并且这导致了问题。如果我只是坚持在那里额外的回报声明,它的工作。
只是一个猜测,但获取数字回来,通常来自您的web服务调用格式化它返回的数据 – 2013-03-21 07:28:15