2013-08-01 11 views
10

一般的なハンドルバーと変更されたEmberハンドルバーヘルパーに加えられた変更に追いつくことができません。私の記憶が正しければ、あなたはHandlebarsヘルパーとEmberハンドルバーヘルパーの違いは何ですか?

  • Ember.Handlebars.helper
  • Ember.Handlebars.registerHelper
  • Ember.Handlebars.registerBoundHelper
  • Handlebars.registerHelper
次の方法でヘルパーを登録することができます

それは私にはあまりにも多いです。違いを教えてください。

答えて

12

Ember.Handlebars.registerHelperは、引数文字列をプロパティにバインドしない基本ヘルパーです。たとえば、挨拶メッセージを返すだけのregisterHelperで作成されたhelloヘルパーを考えてみましょう。

Ember.Handlebars.registerHelper('hello', function(name) { 
    return 'Hello ' + name; 
}); 

テンプレートでそれを使用する、

{{hello name}} 

あなたはHello name、として表示テキストを取得します。 nameプロパティの値はではなく、が検索されます。

nameプロパティの値をヘルパーに取得するには、registerBoundHelperが必要です。名前が示唆するように、それはnameプロパティの間にバインディングを作成します。 nameが変更されると、ヘルパーが再度呼び出されて再レンダリングされます。実装は似ている、

Ember.Handlebars.registerBoundHelper('hello', function(name) { 
    return 'Hello ' + name; 
}); 

Ember.Handlebars.helperは、あなたが望むヘルパーの種類を自動検出するには、いくつかの追加のチェックとregisterBoundHelperと同じです。

EmberではHandlebars.registerHelperのバニラが使用されていません。 Emberを使用しないプロジェクトにも同様のヘルパーが作成されます。

+0

ありがとうございます!親愛なるダルシャン、助手に関する私のもう一つの質問を見ることができますか? http://stackoverflow.com/questions/18005111/custom-handlebars-helper-parameter-is-not-resolved私はブロック1に問題があります。 – wryrych

1
  • Ember.Handlebars.helperはヘルパーを登録することにより、使用すべきである、他の方法は、それだけの限定バージョンです。 Ember.Handlebars.helperは、ビューとモデルを同期して保持するバインディングでHTMLをレンダリングします。関数、ビュー、およびコンポーネントは、ヘルパー定義として提供できます。

  • Ember.Handlebars.registerBoundHelperはちょうどEmber.Handlebars.helperと同じですが、ヘルパー定義として関数のみを指定できます。

  • Ember.Handlebars.registerHelperHandlebars.registerHelperに以前委任されています。 Ember.Handlebars.registerHelperは存在しなくなりましたが、によって内部でHandlebars.registerHelperが使用され、バインディングの設定後にすべてのヘルパーが作成されます。

関連する問題