2014-02-18 61 views
14

如何從句柄腳本內部調用Javascript函數? 原因是:從句柄調用Javascript函數

我不能打破手柄裏面的{{#each}}。所以我需要將它傳遞給Javascript來完成邏輯。

+1

你可以提供一個簡單的代碼片段? – Mardie

+0

我認爲你使用的是輔助方法? – Shannon

回答

29

你可以用助手做到這一點;

Handlebars.registerHelper("printItems", function(items) { 
    var html = "<ul>"; 
    items.forEach(function(entry) { 
    html += "<li>" + entry + "</li>"; 
    }); 
    html += "</ul>"; 
    return html; 
}); 

和你的把手模板;

{{printItems items}} 

上面的代碼會將您的項目放入列表中。

詳情請參考here。轉到助手部分

+3

這是超級塗料 – Squirrl

3

Handlebars是JavaScript的最小誘惑語言,因此它不會讓您從模板內執行任意代碼。然而,把手不會爲您提供助手讓您在模板上執行預定義的代碼。內置的是:each,unless,ifelse

您可以使用Handlebars.registerHelper方法創建自己的助手。這是一個格式化電話號碼的簡單示例。只要您在致電之前註冊助手,您應該可以在代碼中的任意位置使用{{formatPhoneNumber phoneNumber}}

Handlebars.registerHelper("formatPhoneNumber", function(phoneNumber) { 
    phoneNumber = phoneNumber.toString(); 
    return "(" + phoneNumber.substr(0,3) + ") " + 
    phoneNumber.substr(3,3) + "-" + 
    phoneNumber.substr(6,4); 
}); 

注:雖然它可能是技術上可以從助手裏執行非渲染代碼,這被認爲是不好的做法,應該儘量避免,如果在所有可能的。

1

要處理句柄模板中數據的處理,您需要添加助手並在模板中調用該助手。

在這裏閱讀更多...

http://blog.teamtreehouse.com/handlebars-js-part-2-partials-and-helpers

+1

儘管這個鏈接可能回答這個問題,但最好在這裏包含答案的重要部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/18796014) –