2012-02-23 61 views
2

我目前正在使用jQuery tmpl庫來使用本機淘汰模板庫來遷移我的knockout.js應用程序。我有要遷移的行的代碼是:相當於jQuery .tmpl(數據)函數的淘汰本機模板

$("#someTemplate").tmpl(data.SomeDataFromServer).appendTo(someHtmlElement); 

tmpl()功能顯然是jQuery的TMPL庫的一部分(見http://api.jquery.com/tmpl/

鑑於現在我已經改變了我的模板:

<script id="someTemplate" type="text/html"> 
     <li> 
      ... some cooling stuff using native ko templates ;-) 
     </li> 
    </script> 

...這個模板的新調用是什麼樣的?

回答

2

你會使用模板樣結合:

<div data-bind="template: 'someTemplate'"></div> 

<div data-bind="template: { name: 'someTemplate', foreach: myItems }"></div> 

<div data-bind="template: { name: 'someTemplate', data: SomeDataFromServer }"></div> 

此作品原生模板以及jQuery的模板。如果您只使用jQuery模板,請確保您沒有引用jQuery模板插件。

如果您的數據是可觀察的,那麼最初它可以爲null,並且不會呈現任何內容。然後,當您從AJAX調用中填充它時,它將隨您的數據一起更新。

另一種選擇是使用ko.applyBindingsToNode,這看起來像:

var data = [ { name: "one" }, { name: "two" } ]; 

ko.applyBindingsToNode(document.getElementById("test"), { template: { name: 'someTemplate', foreach: data } }); 
+0

我需要調用雖然從JavaScript代碼模板(因此代碼$( 「#someTemplate」)TMPL(data.SomeDataFromServer) .appendTo(someHtmlElement);)。我從服務器獲取一些數據,對其執行一些處理,然後希望將模板應用於該數據。這些數據並不屬於我的模型。爲了給你一些上下文,數據是自動填充的建議,所以我不希望在我的模型中,但我仍然希望能夠調用本地基因敲除模板框架將這些數據轉換爲html。希望這是有道理的。那麼knockout是否具有與tmpl()相同的功能? – 2012-02-23 14:58:04

+1

下面是一個示例:http://jsfiddle.net/rniemeyer/gYk6f/ – 2012-02-23 15:46:34

+1

完美!小提琴正是我所期待的。非常感謝。 – 2012-02-23 16:14:30