2013-02-13 2 views
0

페이지가로드 될 때 원하는 출력을 제공하는 템플릿에 다음 코드가 있습니다.dust.js 동적 내용을 렌더링합니다

내가

{#storylines} 
<li>{text|bl|s} <span class="badge yellow">{@negidx}{.}{/negidx}</span></li>  
{/storylines} 

소켓 IO 코드 데이터를 업데이트하기 위해 소켓을 사용하고 같은 먼지가 동적으로 페이지를 렌더링이 할 수있는 방법이 있나요 :

socket.on('updatechat', function (username, data) { 
     $('#newstoryline').before(blurlines(data)); 
}); 

나는 단순히 <span class="badge yellow">{@negidx}{.}{/negidx}</span>를 추가 해봤가 데이터의 끝이지만 출력은 {@negidx}{.}{/negidx}입니다. - dust.js가 최신 데이터를 렌더링 할 수있는 방법이 있습니까? 아니면 {@negidx}{.}{/negidx} 대신 jQuery를 사용해야합니까?

답변

1

클라이언트 쪽 템플릿을 렌더링하는 경우 쉽습니다. 코드는 다음과 같을 것이다 :

socket.on('updatechat', function (username, data) { 
    if (data) { 
    dust.render('storyline', data, function(err, output) { 
     if (output) { 
     $('#newstoryline').before(output); 
     } 
    }); 
    } 
}); 

여기에 무슨 :

반환 된 데이터는 JSON해야한다. 무언가가 반환되었는지 확인하십시오.

if (data) { 

dust을 사용하면 반환 된 데이터를 사용하여 템플릿을 렌더링 할 수 있습니다. output에 대한

dust.render('storyline', data, function(err, output) { 

확인 :

if (output) { 

은 당신의 페이지에 output를 삽입합니다. 이것은 일반적으로 innerHTML로 이루어 지지만, 무엇이든지 사용할 수 있습니다. 이 시점에서 output은 문자열이라는 것을 기억하십시오.

 $('#newstoryline').before(output); 
+0

현재 템플릿 서버 쪽을 렌더링하고 있습니다. 정상적인'$ ('# newstoryline'). before (blurlines (data));를 사용하여 데이터를 업데이트합니다. 그러나'{@negidx} {.} {/ negidx}'를 값으로 렌더링하는 대신 문자열 만 반환합니다. 서버 측에서 수행 할 수없는 경우 클라이언트 측 렌더링으로 이동해야 할 수도 있습니다. 당신은 서버의 장점/단점과 클라이언트 측 렌더링이 무엇인지 알고 있습니까? – Tam2

+0

둘 다 사용할 수 있습니다. 페이지에 dust-core.js를 포함 시키면 클라이언트 측에서 사용할 수 있습니다. 클라이언트 측 렌더링의 장점은 템플릿을 캐싱 할 수 있다는 것입니다. 따라서 페이지로드시 다운로드해야하는 것은 JSON뿐입니다. – smfoote