0

我遇到了这个我相当困惑的错误。我正在运行一个使用hbs 包进行车把模板的 express 3.0.6 应用程序。我正在尝试根据此示例为每个视图的脚本和样式表创建块。

出于某种原因,每当我尝试使用帮助程序时,它都会在 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。我不确定发生了什么,但希望这会有所帮助。

4

1 回答 1

1

结果在“扩展”寄存器助手中,coffeescript 自动返回了该方法最后一条语句的输出,这导致了一个问题。如果我只是在其中添加一个额外的 return 语句,它就起作用了。

于 2013-03-24T20:46:38.543 回答