2012-02-13 24 views
2

我想要習慣Ember.js和Handlebars,但有一個問題令我困惑。我可能只是想念一些東西,但已經有一段時間了,並且找不到任何錯誤。Ember.js助手沒有正確識別參數

我有簡單的模板波紋管:

<header> 

    <h2><a href="#" class="link-box-title">{{project.pid}}-{{projectWindowTitle project}}</a></h2> 

</header> 

第{{project.pid}}正確輸出project.pid價值,我想這個項目對象傳遞給輔助函數波紋管:

Handlebars.registerHelper('projectWindowTitle', function(proj) { 

    var info = proj.pid; 
    return info; 

}); 

我過於簡化了幫助,但結果總是相同的,助手簡化版,返回任何東西:

<a href="#" class="link-box-title"><script id="metamorph-9-start" type="text/x-placeholder"></script>S2S<script id="metamorph-9-end" type="text/x-placeholder"></script>-</a> 

我在做什麼錯?

回答

5

當使用ember.js中的句柄時,幫助者簽名與「普通」句柄有點不同。主要區別在於在調用幫助器之前,參數不是「已解決」的。

爲你的榜樣,凸出是「項目」,所以你必須得從視圖「項目」的價值:

Handlebars.registerHelper('projectWindowTitle', function(property, options) { 
    var project = Ember.getPath(this, property); 
    var info = project.get("pid"); 
    return info; 
}); 
+1

邁克爾在你需要從助手裏解決'project'對象,因爲參數作爲名稱傳遞正確的。我認爲這將工作,一旦你改變項目分配到'var project = Ember.get(this,property);'。 – 2012-02-13 15:31:36

+0

感謝您指出我的錯字丹,我糾正了它! – 2012-02-13 15:39:35

+0

謝謝,工作完美! – 2012-02-13 16:04:37

1

我知道這個問題已經接受了答案,但..這是不正確的方法:)

正如ember docs所述,正確的方式創建把手助手的燼是有點不同,你會做的把手。

線沿線的東西:

Ember.Handlebars.helper('projectWindowTitle', function(value) { 
    var escaped = Handlebars.Utils.escapeExpression(value.pid); 
    return new Handlebars.SafeString(escaped); 
});