Meteorを使用してカスタムヘルパーを作成しようとしています。こちらのドキュメントに従ってください: https://github.com/meteor/meteor/wiki/Handlebars
私は次のようにヘルパーを定義しようとしました:
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));
}
注、流星とハンドルバーはまったく新しいです。私はアンダースコアを使用する方がはるかに幸せになると思いますが、流星のドキュメントはほぼ完全にアンダースコアを一lanceしています。ヘルパー関数を定義するのに何か間違ったことをしていますか? 2番目のパラメーター「bar」が表示されず、代わりにオプションとして解釈されるようです。 (注:console.log(options)の場合、「undefined」が返されます)。
Meteorバージョン0.4.0(8f4045c1b9)
ロジックは良好です。テンプレートに変更を加えるだけです
<template name="myTemplate">
{{testHelper "value1" "value2"}}
</template>
TestHelper関数はmyTemplateテンプレートでのみ定義されることに注意してください。
TestHelperをグローバルに登録する場合は、次のようにする必要があります。
Handlebars.registerHelper('testHelper', function(foo, bar){
console.log(foo);
console.log(bar);
});
楽しむ
に追加
<template name="myTemplate"> {{testHelper "value1" "value2"}} </template>
パラメーターとして値を渡す代わりに、パラメーターとして関数を渡します。
<template name="myTemplate">
{{ testHelper1 (testHelper2 "value2") }}
</template>
乾杯!!!!!