Birisi bana aşağıdakilerin neden çalışmadığını söyler misiniz lütfen.backbone.js basit görünüm olayı tetiklenmiyor
events: {
"click a" : "showForm"
},
Birisi bana aşağıdakilerin neden çalışmadığını söyler misiniz lütfen.backbone.js basit görünüm olayı tetiklenmiyor
events: {
"click a" : "showForm"
},
Sizin $("body")
seçici: Ben linki
<body>
<a class="newnote" href="#">Add new note</a>
</body>
<script>
var note = Backbone.Model.extend({});
var notes = Backbone.Collection.extend({
model: note,
url: '<?= $this->createUrl('/filenotes/api'); ?>'
});
var note_view = Backbone.View.extend({
el: 'table',
});
var Appview = Backbone.View.extend({
el: $('body'),
events: {
"a click" : "showForm"
},
initialize: function(){
//alert('hi');
},
showForm: function(){
alert('hi');
}
});
var v = new Appview();
</script>
başlayanlar için bir jsfiddle yoktur tıkladığınızda yangın uyarısı bekliyorum, olaylar nesne bu sözdizimi olduğunu DOM yüklendikten önce tetikleniyor, bu yüzden boş dönüyor ve bağlantıya asla bağlanmıyor.
Omurga nesnesi tanımları, nesne örnekleriyle tanımlanır; bu, modeli hemen başlattığınızda değil, tanımda hemen değerlendirildikleri anlamına gelir.
Bu:
Backbone.View.extend({foo: "bar"})
işlevsel Bu aynı mı:
var config = {foo: "bar"};
Backbone.View.extend(config);
Eğer el
değeri olarak bir $("body")
seçici olması nedeniyle, kısa sürede Görünüm yapılandırması ayrıştırılır olarak değerlendirilen alır Yani DOM henüz yüklenmedi ve hiçbir şey iade edilmeyecek.
Bunu çözmek için birçok seçenek vardır ... bunların hepsi DOM yüklendikten sonra selektörün değerlendirmesini geciktirmeyi içerir.
Benim kişisel favori DOM yüklendikten sonra, örnekleme de görünümüne de seçici geçmektir: Ayrıca
var AppView = Backbone.View.extend({
// don't specify el here
});
$(function(){
// after the DOM has loaded, select it and send it to the view
new AppView({ el: $("body") });
}
- Skylar söyledi gibi, olay yanlış ilan edildi. İşte
çalışan bir JSFiddle var: Derick cevabı yanı sıra, DOM öğeleri kapsamı hakkında dikkat çekmek, bir elementin basit bir tıklama olayı tetiklemek için çalışıyordu ama benim View.el bir sigara direkt ebeveyn başvuran edildi http://jsfiddle.net/yj5Pz/5/Sonra bir sebepten dolayı (belki de bir yineleme hatası) işe yaramadı. Elimi "vücut" css seçicisine değiştirdiğimde her şey yolunda gitti.
Ekstra bilgi için teşekkürler. – 32423hjh32423
Omurga, zamanınız olduğunda jQuery ile "el" inizi otomatik olarak sarmalayacağına güvenmek olacaktır: '{el: 'body', ...}, şimdi' bu. $ El' olacak aradığınız jQuery öğesi. – rfunduk
+1 rfunduk - yeni v0.9 omurga dizisi ile başa çıkmak çok daha kolay. elinizi bir jQuery selektörüne manuel olarak sarmanıza gerek yok, çünkü omurga bizim için yapıyor –