2012-02-23 6 views
2

現在、knockout.jsアプリケーションからjQuery tmplライブラリを使用してネイティブノックアウトテンプレートライブラリを使用しています。私が移行しなければならないコードの行のいずれかです。tmpl()機能は明らかにjQueryのTMPLライブラリの一部であるjQuery .tmpl(data)関数に相当するノックアウトネイティブテンプレート

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

http://api.jquery.com/tmpl/を参照)

私が今まで私のテンプレートを変更した考える:

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

...テンプレートへの新しい呼び出しはどのように見えますか?

答えて

2

あなたは次のようにバインディングテンプレートを使用します。これは、ネイティブのテンプレートだけでなく、jQueryのテンプレートと連携

<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テンプレートプラグインを参照していないことを確認してください。

データが観測可能な場合は、最初はnullになり、何もレンダリングされません。次に、AJAXコールからデータを入力すると、データが更新されます。

別のオプションは次のようになります。これは、ko.applyBindingsToNodeを使用することです:私は、したがって、コード$( "#のsomeTemplate")(ただし、JavaScriptコードからテンプレートを呼び出す必要が

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

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

TMPL(data.SomeDataFromServer) .appendTo(someHtmlElement);)。私は、サーバーからいくつかのデータを取得し、その上で何らかの処理を行い、そのデータにテンプレートを適用したいとします。データは実際に私のモデルに属していません。あなたにいくつかのコンテキストを与えるために、データはオートコンプリート提案です。私はそれを私のモデルでは望んでいませんが、私はまだこのデータをhtmlに変換するネイティブなノックアウトテンプレートフレームワークを呼び出せるようにしたいと思います。希望は意味をなさない。ノックアウトはtmpl()と同等の機能を持っていますか? –

+1

サンプルはこちらhttp://jsfiddle.net/rniemeyer/gYk6f/ –

+1

パーフェクト!フィドルはまさに私が探していたものでした。本当にありがとう。 –