2013-10-08 56 views
0

我試圖僅將轉換器和/或模板傳遞給特定的模板。根據the API,您只能通過幫手,但不能轉換或模板。將特定的轉換器/模板傳遞給jsViews/jsRender模板

有沒有辦法做到這一點,或有人知道它是否計劃在未來支持這一點?

注意在全球範圍內通過$.views.templates({...})$.views.converters({...})傳遞他們是不是一個真正的選擇,因爲我會有辦法很多,甚至名稱衝突的模板和轉換器。

回答

2

您可以使用您的模板聲明轉換器 - 並且它們對模板是私有的。見Registering templates: $.templates()。查找「高級方案:將私有資源與模板關聯」

此外,the API for registering converters$.views.converters({...})還允許您全局註冊一個轉換器(或一組轉換器),或者在本地註冊一個特定模板。請參閱「將轉換器添加爲父模板的專用資源」部分。爲了使它們成爲本地模板或私有模板,只需在模板中作爲轉換器()調用的最後一個參數傳遞即可。

因此,這裏是一個有自己特殊的轉換器模板和模板同時宣佈:

$.templates({ 
    myTemplate: { 
    markup: "Use my converter {{myconv:name}}", 
    converters: { 
     myconv: function(val) { return myCalculatedValue; } 
    } 
    } 
}); 

現在{{myconv:...}}是特定於myTemplate並不會其他地方。

現在假設我想動態地替換「myconv」,仍然在myTemplate之內。我可以添加/使用converters() API隨時更改:

$.views.converters(
    "myconv", 
    function(val) { return myNewUpdatedCalculatedValue; }, 
    $.templates.myTemplate // Only override it for myTemplate, not globally... 
); 

下面是一些相關鏈接:

+0

令人驚歎!我在看完全錯誤的地方,我認爲它與'link(selector,helpers)'或'render(helpers)'樣式中的Helpers類似。 也許你可以在文檔中更明顯一點? 無論如何非常感謝! –

+0

@mrs_sheep:本地轉換器現在覆蓋相同名稱的全局轉換器。 – BorisMoore