2011-11-28 41 views

回答

21

一對夫婦的事情,應該幫助清理這件事:

  • 如果Knockout.js之前引用jquery.tmpl.js,然後KO將設置jQueryTmplTemplateEngine爲默認值。
  • jQueryTmplTemplateEngine不支持匿名模板。這意味着您不能在其中使用控制流綁定,如foreach,if,ifnotwith。您仍然可以使用模板綁定(包括嵌套模板)。
  • 您可以通過調用ko.setTemplateEngine()來控制默認模板引擎。您可以傳遞您想要使用的引擎實例,如ko.setTemplateEngine(new ko.nativeTemplateEngine)
  • 您也可以將模板引擎傳遞給templateEngine參數中的模板綁定。

因此,對於您的情況,您可能希望刪除對jquery.tmpl.js的引用,以便默認使用本機模板引擎。本地模板引擎確實支持嵌套模板(匿名或命名)。顯示使用本地模板引擎與它內部的匿名模板命名模板

快速樣品:http://jsfiddle.net/rniemeyer/GXFYB/

+0

+1 - 比我更好的答案!但是,公平地說,新的淘汰模板引擎存在限制/向後兼容性問題。例如,您的拖放示例(http://www.knockmeout.net/2011/05/dragging-dropping-and-sorting-with.html)是否會與新引擎一起工作,因爲它依賴於在模板中傳遞參數數據綁定? –

+0

是的,有一些變化是必要的。從帖子中拖放使用'tmplItem'這是一個jQuery模板的概念,但可以輕鬆替換。它也使用'templateOptions',這在本地模板中不是當前支持的。我將着眼於使用新語法創建更新的示例,並查看是否可以找到方法進一步清理它。 –

+0

我可能會發布這個或添加一個註釋到博客文章,但這裏是1.3中的兩個示例:http://jsfiddle.net/rniemeyer/JEe2x/和http://jsfiddle.net/rniemeyer/HzNuS/ 。我把它們清理了一些,然後包裝了模板綁定,以儘可能簡單地添加綁定。 –

0

當我刪除了包括到我得到這個問題的TMPL JS庫,但重新添加它固定的問題。你確定你已經包含jquery.tmpl.js庫嗎?

<script src='..<some path>../jquery.tmpl.js")' type="text/javascript"></script> 

此外,我包括第一個tmpl庫和第二個淘汰賽庫。也許這是一個因素?