2014-01-20 1 views
1

есть способ обновить данные шаблона без повторной рендеринга шаблона пыли.Обновление данных шаблона dust.js

Что я имею в виду.

У меня есть успешный шаблон пыли, которая выводит следующее:

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

когда я делать обновленную информацию о своих данных, например: изменение «Джон», чтобы «Питер» и послал результат в базу данных, мне нужно снова отобразить шаблон пыли (который будет принимать все данные и повторно нарисовать его на клиенте), или есть ли способ сказать пыли обновить ТОЛЬКО 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; 
    }); 
} 

С этим вы только повторно визуализируете часть, которая фактически изменяется.

EDIT 1: вам не нужно расширение .tl при вызове другого шаблона, поэтому избавилось от этого.

+0

отличное предложение. Я думаю, это сработает. спасибо за ваш ввод – user2062455

+0

Рад, что это может вам помочь. Кроме того, я пропустил ту часть, где вы сказали, что обновляете ее в базе данных, поэтому я бы поставил dust.render внутри обратного вызова функции Ajax. Таким образом, если вызов базы данных обновлений завершится неудачно, на вашей странице не будет отображаться некорректная информация. – prashn64