2016-03-28 6 views
1

.hbsファイルでは、さまざまなアイテムのナビゲーションメニューを作成しています。項目の1つは、ユーザーがプロ(ブール値)の場合にのみ表示されます。イニシャライザからハンドルバーに変数を渡す.hbs(Discourse Plugin、一般的にはEmberかもしれません)

var proは私のイニシャライザで設定された変数で、メニュー項目の1つを条件付きで表示するために、.hbsというファイルを渡す必要があります。

Emberでは、これはどのように達成されていますか?

答えて

1

このような場合、サービスを使用して、アプリケーションのライフサイクル中に変数を格納します。イニシャライザは変数とメニュー項目を処理します。メニューコンポーネントは、サービスから変数を取得します。

また、サービスから変数を取得するヘルパーを定義することもできます。

+0

ああそうサービスで関数を入れて、テンプレートで利用できるようになります初期化子でヘルパーを定義しますか? – stevenpslade

+0

はいといいえ。 Menuコンポーネントは、サービスからメニュー項目を取得します。メニューコンポーネントのテンプレートは、これらのメニュー項目を反復処理します。つまり、私たちはヘルパーを必要としません。 – ykaragol

0

私は全く同じ問題を抱えていました。私は自分のHTMLに設定されている言語変数を使用しなければならず、テンプレートでこの言語変数を使用する必要がありました。私はヘルパーを使っていました。ヘルパーでは、あなたのイニシャライザで宣言されている変数proを使うことができます。

例:

function myInit(pro) { 
    var template = ...; 
    var data = ...; 
    Handlebars.registerHelper('ifProUser', function(item) { 
     if (pro) { 
     return "pro menu here"; 
     } else { 
     return ""; 
     } 
    } 
    var html = template(data); 
    ... 
} 

はその後、テンプレートにだけ使用します。

{{ifProInit}}{{/ifProInit}} 
+0

したがって、hbsテンプレートで '{{ififProuser}}'を実行しますか? – stevenpslade

+1

あなたはヘルパー{{ifProUser}} {{/ ifProUser}}を使用します –

関連する問題