Функции обратного вызова для jquery-templ? - PullRequest
1 голос
/ 27 октября 2010

Я использую плагин jquery-tmpl .Есть ли способ указать обратный вызов после запуска шаблона?Я хочу сделать что-то вроде

<script id='itemTemplate' type='text/html'>
  <li class="item" id=${timestampMs}>
    <span class="content">${content}</span> 
  </li>
  ${processItem($('#' + timestampMs))}
</script>

Где processItem делает что-то с только что сгенерированным элементом <li>.Тем не менее, как написано, элемент не существует во время вызова processItem.

Вот как я запускаю шаблон:

// Make the AJAX call to the service
$.ajax({
  dataType: "json",
  url: "/getItems",
  success: function(data) {
    // fill out template from json
    $('#itemTemplate').tmpl(data).appendTo('#container');
  }
});

Спасибо!

Ответы [ 2 ]

4 голосов
/ 28 октября 2010

После вызова .tmpl у вас есть узлы, с которыми вы можете работать, поэтому вы можете сделать это:

$.ajax({
  dataType: "json",
  url: "/getItems",
  success: function(data) {
    // fill out template from json
    $('#itemTemplate').tmpl(data).each(function (index) {                           
      processItem($(this))
    }).appendTo('#container');               
  }
});

Это похоже на ваш обходной путь, но вам не нужно повторно выбирать элементы, и вы должны быть в состоянии соединить вызов.

0 голосов
/ 27 октября 2010

Вот обходной путь, который я сейчас использую:

$.ajax({
  dataType: "json",
  url: "/getItems",
  success: function(data) {
    // fill out template from json
    $('#itemTemplate').tmpl(data).appendTo('#container');

    // now process the new events
    $('#container .item').each(function (index) {                           
      processItem($(this))
    });                     
  }
});
...