web-dev-qa-db-ja.com

Meteorでハンドルバーヘルパーで複数のパラメーターを使用する方法は?

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)

51
Greg

ロジックは良好です。テンプレートに変更を加えるだけです

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

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

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

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

楽しむ

59
Rui Gonçalves

に追加

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

パラメーターとして値を渡す代わりに、パラメーターとして関数を渡します。

<template name="myTemplate">
    {{ testHelper1 (testHelper2 "value2") }}
</template>

乾杯!!!!!

1
mad Man