2011-11-05 1 views
8

È possibile all'interno di un helper di Handlebars.js creare elementi utilizzando jQuery e associare ad essi un gestore di eventi? Mi piacerebbe essere in grado di creare elementi attivi utilizzando gli helper.Utilizzare gli helper di Handlebars.js per creare elementi attivi con jQuery?

Esempio:

Handlebars.registerHelper("button", function(title) { 
    var button = $('<button>').text(title); 
    button.click(function() { 
     alert("Button " + title + " clicked."); 
    }); 
    return $('<div>').append(button).html(); 
}); 

Nel modello di manubri che istanziare il pulsante in questo modo: la funzione

{{{button "Click Me!"}}} 

Capisco che questo non può funzionare, in quanto HTML del jQuery() `rimuove il gestore di eventi ... ma semplicemente restituendo il pulsante ovviamente non funziona neanche. Gli helper dei manubri dovrebbero essere in grado di restituire i nodi DOM, ma questo non è possibile, giusto? Ho provato a restituire button.get(), ma senza successo.

Qualche idea?

risposta

3

Quello che potresti fare è creare una funzione al di fuori di registerHelper da chiamare su Click. Quindi il codice per che sarebbe simile a questa:

Handlebars.registerHelper("button", function (text) { 
    var button = $('<button></button>').text(text).attr('onclick', 'button_clickEvent()'); 
    return $('<div></div>').append(button).html(); 
}); 

var button_clickEvent = function() { 
    alert("Button " + $(this).text() + " clicked."); 
}; 
+0

Grazie, funzionerebbe, ma in realtà ho bisogno di costruire la funzione nel metodo di supporto. Ora uso [KnockoutJS] (http://knockoutjs.com/) che gestisce questo e molte altre cose in un modo molto elegante. –

+0

@StefanK. Ok, ma questo risponde alla tua domanda? – sinemetu1

+0

Sì, lo è. Grazie. –