2012-02-23 3 views
2

현재 knockout.js 앱에서 jQuery tmpl 라이브러리를 사용하여 기본 knockout 템플릿 라이브러리를 사용하고 있습니다. 내가 이전에이 코드의 라인 중 하나는 :jQuery .tmpl (데이터) 함수에 해당하는 넉 아웃 기본 템플릿

:

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

tmpl() 기능

지금 내 템플릿을 변경 한 I 감안할 때 (http://api.jquery.com/tmpl/ 참조) 분명히 JQuery와 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> 

또는

이 기본 템플릿뿐만 아니라 jQuery를 템플릿으로 작동
<div data-bind="template: { name: 'someTemplate', data: SomeDataFromServer }"></div> 

. jQuery 템플릿 만 사용하는 경우 jQuery 템플릿 플러그인을 참조하지 않는지 확인하십시오.

데이터가 관찰 가능 인 경우 처음에는 null 일 수 있으며 렌더링되지 않습니다. 그런 다음 AJAX 호출에서 채울 때 데이터로 업데이트됩니다.

또 다른 옵션은 같을 것이다, ko.applyBindingsToNode을 사용하는 것입니다. 그래도 난 자바 스크립트 코드에서 템플릿을 호출 할 필요가

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

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

(따라서 코드 $ ("#의 someTemplate") tmpl (data.SomeDataFromServer) .appendTo (someHtmlElement);). 서버에서 데이터를 가져 와서 일부 처리를 수행 한 다음 해당 데이터에 템플릿을 적용하려고합니다. 데이터는 실제로 내 모델에 속하지 않습니다. 당신에게 약간의 컨텍스트를 제공하기 위해 데이터는 자동 완성 제안이므로 내 모델에는 필요 없지만이 데이터를 html로 변환하기위한 기본 녹아웃 템플릿 프레임 워크를 호출 할 수 있기를 바랍니다. 희망은 그 말이 맞습니다. 그럼 녹아웃은 tmpl()과 같은 기능을합니까? –

+1

다음은 샘플입니다. http://jsfiddle.net/rniemeyer/gYk6f/ –

+1

Perfect! 바이올린은 제가 찾고있는 것입니다. 정말 고마워. –