0

私はかなり混乱しているこのバグを取得しています。テンプレート用のハンドルバー用のhbsパッケージを使用してExpress3.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で、「11」を取得します。1の値はランダムに変化することがありますが、常にx個あります。xは拡張タグの数です。

誰かが与えることができるかもしれない洞察/助けをありがとう!

編集::また、私が気付いたもう1つのことは、ブロックヘルパーを次のように変更した場合です。

  {{{stylesheets}}}
  {{{javascripts}}}

数字は1から始まり、ページを更新するたびに1ずつ増えていきます。何が起こっているのかわかりませんが、うまくいけばそれが役立つでしょう。

4

1 に答える 1

1

'extend'レジスタヘルパーで判明した、coffeescriptはメソッドの最後のステートメントの出力を自動的に返し、それが問題を引き起こしていました。そこに余分なreturnステートメントを貼り付けるだけで、うまくいきました。

于 2013-03-24T20:46:38.543 に答える