2014-01-20 71 views
1

有没有更新模板数据而不重新渲染灰尘模板的方法。dust.js模板数据更新

我的意思是这个。

我有输出下面的一个成功的灰尘模板:

<ul> 
    <li>John</li> 
    <li>Mark</li> 
    <li>Jim</li> 
    <li>Nick</li> 
</ul> 

当我这样做对我的数据的更新,例如:变“约翰”为“彼得”和发送的处理结果到数据库中,是否需要再次重新渲染灰尘模板(这将获取所有数据并将其重新绘制到客户端上),或者是否有任何方法告诉灰尘只更新值为“John”的li(并将其更改为“彼得”)?

+0

灰尘不支持以这种方式进行数据绑定。您不能仅渲染模板的一部分。 – smfoote

+0

很伤心。我会看看是否有一个可以用来处理灰尘的插件。我会发布它,如果我发现任何东西 – user2062455

回答

2

您可以使用较小的模板组件。这就是我的意思是:

list.tl:

<ul> 
    <li>{>"listItem" name="John"/}</li> 
    <li>{>"listItem" name="Mark"/}</li> 
    <li>{>"listItem" name="Jim"/}</li> 
    <li>{>"listItem" name="Nick"/}</li> 
</ul> 

listItem.tl:

{name} 

然后,当你,让我们说,点击一个元素,你可以这样做:

document.getElementsByTagName('li').addEventListener('click', function() { 
    var element = this; 
    dust.render('listItem', {name: 'MyNewName'}, function(error, output) { 
    element.innerHTML = output; 
    }); 
} 

这样,您只能重新渲染实际上正在更改的部分。

编辑1:你调用另一个模板时不需要.tl扩展名,所以摆脱了这一点。

+0

优秀的建议。我认为它会起作用。感谢您的输入 – user2062455

+0

很高兴它可以提供帮助。另外,我错过了你说你在数据库中更新它的部分,所以我将把dust.render放在Ajax函数的成功回调中。这样,如果更新数据库调用失败,您的页面将不会显示不正确的信息。 – prashn64