26

私のMeteorアプリでは、次のような多くのことを書いていることに気づきました。

Templates.myTemplate1.isCurrentUser = function() {
  return Session.get("isCurrentUser");
};


Templates.myTemplate2.isCurrentUser = function() {
  return Session.get("isCurrentUser");
};

セッション内に保存されている同じ単純な値にアクセスするには、さまざまなテンプレート (ハンドルバーを使用しています) が必要です。

同じ関数を何度も書くのを避ける方法はありますか? ありがとう

4

6 に答える 6

46

@cioddiの回答に基づいて、パラメーターを Handlebars ヘルパーに渡すことができるため、それを汎用関数にして、任意の値を動的に簡単に取得できるようにすることができます。

Template.registerHelper('session',function(input){
    return Session.get(input);
});

次に、このようにテンプレートで呼び出すことができます

{{session "isCurrentUser"}}

認証パッケージには、ユーザーがログインしているかどうかを検出するために使用できる CurrentUser という名前のグローバル ヘルパーが付属していることに注意してください。

{{#if currentUser}}
    ...
{{/if}}
于 2012-10-27T23:57:21.933 に答える
27

meteor は現在デフォルトのテンプレート エンジンとしてハンドルバーを使用しているため、次のようなヘルパーを定義できます。

if (Meteor.isClient) {

Template.registerHelper('isCurrentUser',function(input){
  return Session.get("isCurrentUser");
});

}

app.js ファイルをきれいに保つために、たとえば helpers.js という名前の新しいファイルでこれを行うことができます。このヘルパーが登録されると、挿入することで任意のテンプレートで使用できます{{isCurrentUser}}

于 2012-10-25T09:19:23.267 に答える
12

皆さんに注意してください: 0.8.0 のリリースにより、Handlebars.registerHelperは非推奨になりました。新しい Blaze エンジンを使用するUI.registerHelperことは、これを達成するための新しい方法です。

@cioddi のコードの更新版

UI.registerHelper('isCurrentUser',function(input){
  return Session.get("isCurrentUser");
});
于 2014-03-31T23:10:58.197 に答える
5

実は今、あなたはただ使うことができます{{#if currentUser}}

これは、accounts/authパッケージに含まれるグローバルです。

http://docs.meteor.com/#template_currentuser

于 2013-03-09T08:39:27.657 に答える
5

これらの流星のハンドルバー ヘルパーを確認してください: https://github.com/raix/Meteor-handlebar-helpers

セッション ヘルパーは数多くあります。ドキュメントから:

Is my session equal to 4?: {{$.Session.equals 'mySession' 4}}

于 2014-05-15T15:00:04.560 に答える
1

を追加しisCurrentUserTemplateて、これを他のテンプレートに含めることができます

{{> isCurrentUserTemplate}}
于 2012-10-25T08:24:38.583 に答える