Meteor のハンドルバー ヘルパーで複数のパラメータを使用するにはどうすればよいでしょうか? 質問する

Meteor のハンドルバー ヘルパーで複数のパラメータを使用するにはどうすればよいでしょうか? 質問する

Meteor を使用してカスタム ヘルパーを作成しようとしています。次のドキュメントに従ってください:https://github.com/meteor/meteor/wiki/ハンドルバー

私はヘルパーを次のように定義しようとしました。

Template.myTemplate.testHelper = function(foo, bar, options) {
    console.log(foo);
    console.log(bar);
}

私のテンプレートは次のようになります:

<template name="myTemplate">
    {{#testHelper "value1" "value2"}}
    {{/testHelper}}
</template>

コンソール出力を見ると、次の 2 行の出力が表示されると予想しました。

value1
value2

ただし、私のコンソールは次のようになります:

value1
function (data) {
    // don't create spurious annotations when data is same
    // as before (or when transitioning between e.g. `window` and
    // `undefined`)
    if ((data || Handlebars._defaultThis) ===
        (old_data || Handlebars._defaultThis))
      return fn(data);
    else
      return Spark.setDataContext(data, fn(data));
  } 

注意してください。私は Meteor と Handlebars についてまったくの初心者です。アンダースコアを使用した方がずっと満足できると思いますが、Meteor のドキュメントではアンダースコアについてほとんど触れられていません。ヘルパー関数の定義を間違えているのでしょうか? 2 番目のパラメータ「bar」が認識されず、代わりにオプションとして解釈されているようです。(注: console.log(options) を実行すると、「undefined」が返されます)。

Meteor バージョン 0.4.0 (8f4045c1b9)

ベストアンサー1

あなたのロジックは良いです、テンプレートにいくつか変更を加えるだけです

<template name="myTemplate">
  {{testHelper "value1" "value2"}}
</template>

testHelper 関数は myTemplate テンプレートでのみ定義されていることに注意してください。

testHelperをグローバルに登録したい場合は、次のようにする必要があります。

Handlebars.registerHelper('testHelper', function(foo, bar){
  console.log(foo);
  console.log(bar);
});

楽しむ

おすすめ記事