2011-10-18 18 views

cevap

19

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> 

burada http://jsfiddle.net/neilcharlton/yj5Pz/1/

+0

Ekstra bilgi için teşekkürler. – 32423hjh32423

+1

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

+0

+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 –

9

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/

1

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.

İlgili konular