2013-02-22 81 views
0

我正在爲一個項目構建一個相當複雜的通知系統,我想弄清楚爲數據庫中各種類型的通知存儲模板的最佳方法。在數據庫中存儲淘汰模板

我發現一些類似的帖子Using a variable to store a knockout template建議在綁定視圖模型之前將所有可能的模板加載到DOM中。這個解決方案可以工作,但似乎不能很好地擴展。 knockout是否提供了一種基於ajax調用來加載模板的方法?

回答

1

Knockout具有可擴展性,允許您添加自己的模板引擎或您的custom template sources

我有幾個項目,我使用這個功能來創建一個模板引擎,默認情況下首先查看模板字符串的JavaScript對象。有很多方法可以做到。這是我實施我的方式:https://github.com/rniemeyer/SamplePresentation/blob/master/js/stringTemplateEngine.js

從服務器加載您的模板後,你會再只是做:

ko.templates[templateName] = response; 

在任何時候,你可以很容易地從該對象中刪除模板。

這裏是工作示例:http://jsfiddle.net/rniemeyer/erytN/

+0

我喜歡這樣的解決方案,這是非常乾淨的,謝謝!現在我可以通過ajax加載模板,是否有可能爲ul中的每個li使用一個單獨的模板,這已經與foreach綁定了? – mcottingham 2013-02-22 20:07:00

+0

是的,模板名稱可以通過函數動態確定。這裏是一個示例:http://plnkr.co/edit/yfQAnM?p=preview(jsFiddle目前不適合我)。 – 2013-02-22 20:17:55

+0

太棒了!這太厲害了,謝謝你,先生! – mcottingham 2013-02-22 20:23:52