2013-08-01 103 views
10

我無法趕上所有對純手柄和修改後的Ember Handlebars傭工所做的修改。如果我沒記錯的話,你可以用下面的方法註冊一個幫手Handlebars助手和Ember Handlebars助手之間有什麼區別?

  • 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 namename財產的價值是而不是擡頭。

要將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我有一個塊的問題。 – wryrych

1
  • Ember.Handlebars.helper應該用來註冊助手,其他方法只是它的限制版本。 Ember.Handlebars.helper呈現帶有保持視圖和模型同步的綁定的HTML。函數,視圖和組件可以作爲幫助器定義提供。

  • Ember.Handlebars.registerBoundHelper就像Ember.Handlebars.helper,但您可以只提供一個函數作爲輔助定義。

  • Ember.Handlebars.registerHelper先前委託給Handlebars.registerHelperEmber.Handlebars.registerHelper不再存在,但Handlebars.registerHelper在內部仍由Ember在綁定建立後創建所有助手。

相關問題