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);
});
楽しむ