2011-11-05 11 views
8

Bir Handlebars.js yardımcısının jQuery kullanarak eleman yaratması ve onlara olay işleyicisini eklemesi mümkün müdür? Yardımcıları kullanarak aktif öğeler oluşturabiliyordum.Handlebars.js yardımcılarını jQuery ile etkin öğeler oluşturma?

Örnek: gidon şablonunda

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

böyle düğmeye örneğini:

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

Ben bu işe anlıyorum, jQuery'nin html beri() işlevi `kaldırır Olay işleyici ... ancak numaralı düğmeyi döndürdüğünüzde açıkça işe yaramıyor. Gidon yardımcıları DOM düğümlerini iade edebilmelidir, ancak bu mümkün değil, değil mi? button.get()'u geri döndürmeye çalışmadım.

Herhangi bir fikrin var mı?

cevap

3

Yapabilecekleriniz, registerHelper dışında bir işlev oluşturmaktır. Yani bunun için kod şuna benzer:

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

Teşekkürler, bu işe yarar ama aslında yardımcı yöntemde işlevi oluşturmam gerekiyor. Şimdi bunu [KnockoutJS] (http://knockoutjs.com/) kullanıyorum ve bunu çok daha zarif bir şekilde hallediyorum. –

+0

@StefanK. Tamam ama bu soruyu cevaplıyor mu? – sinemetu1

+0

Evet, öyle. Teşekkürler. –