2013-02-13 124 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渲染最新的數據?或者我將不得不使用某種jQuery而不是{@negidx}{.}{/negidx}

回答

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

if (output) { 

插入output到您的網頁。這通常使用innerHTML完成,但您可以使用任何適合您的作品。請記住,output在這一點上是一個字符串。

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

我目前正在渲染模板服務器端。 使用普通的$('#newstoryline')。before(blurlines(data));'它更新數據。但它不會將'{@negidx} {。} {/ negidx}'呈現爲值,而只是返回一個字符串。 如果不能完成服務器端,可能必須考慮移動到客戶端渲染。你知道服務器和客戶端渲染的優點/缺點嗎? – Tam2 2013-02-13 21:33:28

+0

你可以使用兩者。只需在您的頁面上添加dust-core.js即可使用客戶端。客戶端渲染的一個優點是您可以緩存模板,因此您在頁面加載時需要下載的唯一東西是JSON。 – smfoote 2013-02-13 21:43:45