2014-07-21 7 views
2

jQuery.handlebars를 템플릿 라이브러리로 사용하여 내 앱을 초기화하기 위해 동적 DOM 추가 기능을 사용하고 있습니다. 그러나 jQuery.handlebar의 문제점은 동적으로 호출 된 DOM에 템플릿을 렌더링하지 않는다는 것입니다. 예jQuery.handlebars 템플릿이 동적 DOM 추가시 렌더링되지 않음

$(document).ready(function(){ 
     $('body').append('<div id="content"></div>'); 
     $('#content').render('default', { 

     }); 
    )}; 

기본값은 모든 템플릿 경로가 올바르게 초기화 된 default.hbs 파일입니다.

그러나 그것은 어디

index.html을

<div id="#content"></div> 

JQuery와 jQuery.handlebars 또 다른 문제는 그것의 모든 요소를 ​​추가하지 않는다는 것입니다

$('#content').render('default', { 

    }); 

파일의 경우에 작동 jQuery를 사용하는 템플릿. 예

default.hbs

<div id="#append-content"></div> 

JQuery와 코드는

 $('#append-content").html('Hi'); 

하지만 내용 "안녕"표시되지 않습니다.

다소 혼란 스럽거나, 틀렸거나 불만 사항이 있으면 jQuery.handlebars의 사용에 관해서 알려주십시오. 함께 갈 새로운 템플릿 라이브러리를 제안하십시오.

+0

jsbin 또는 jsfiddle에서 실패한 데모가 있습니까? – blessenm

+0

@blessenm [데모] (http://plnkr.co/edit/dhdg5c04uzrpFM5Q5UiS)이 plunker는 그것이 무엇인지 알려주지 만 첫 번째 문제는이 예제에서 부분적으로 해결되었습니다 .... template.hbs에 내용을 추가하는 것은 큰 문제 – cs1193

답변

1

jquery.handlebars 렌더링 방법이 비동기입니다. 렌더링이 완료되기 전에 컨테이너에 추가하려고합니다. render 메소드는 렌더링이 완료되면 'render.handlebars'이벤트를 트리거합니다. 콜백에서 DOM 조작을 수행하십시오.

$('#content').render('template', { 

}).on('render.handlebars', function() { 
    $('#append-content').html("hello"); 
}); 
+0

감사합니다. @ blessenm, 그것은 매력처럼 작동했습니다. btw jquery.handlebars에 대한 문서를 많이 찾을 수 없으므로 공유 할 수있는 참조를 보유하고 있는지 알 수 있습니까? – cs1193

+0

나는 플러그인의 소스 코드를 살펴 봤다. https://github.com/71104/jquery-handlebars/blob/master/src/plugin.js#L73 아주 간단한 플러그인입니다. 대답을 수락하십시오. – blessenm