2010-10-27 6 views
1

J'utilise le plugin jquery-tmpl. Existe-t-il un moyen de spécifier un rappel après l'exécution d'un modèle? Je veux faire quelque chose commeFonctions de rappel pour jquery-templ?

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

processItem fait quelque chose à l'élément <li> qui vient de se produit. Comme il est écrit, cependant, l'élément n'existe pas au moment processItem est appelé.

Voilà comment je lance le modèle:

// 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'); 
    } 
}); 

Merci!

Répondre

4

Une fois que vous appelez .tmpl, vous avez des noeuds que vous pouvez agir, vous pouvez le faire:

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

C'est similaire à votre solution de contournement, mais vous ne devriez pas avoir besoin de resélectionner les éléments, et vous devriez être en mesure d'enchaîner l'appel.

0

est ici la solution que je utilise pour l'instant:

$.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)) 
    });      
    } 
});