backbone.js der simple-view-Ereignis nicht auslösen.
Kann mir jemand sagen warum das folgende nicht funktioniert, bitte. Ich nehme an, dass die Warnung ausgelöst wird, wenn ich auf den link
<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>
Es ist ein jsfiddle hier http://jsfiddle.net/neilcharlton/yj5Pz/1/
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre
$("body")
selector feuern, bevor Ihre DOM geladen ist, also es ist Rücksendung von leeren und nicht verbindlich für den link.Backbone-Objekt-Definitionen definiert sind, mit dem Objekt-Literale, das heißt, Sie bekommen sofort ausgewertet auf definition, nicht beim instanziieren des Modells.
Diese:
Ist funktionell der gleiche wie dieser:
Da haben Sie eine
$("body")
Selektors als Wert fürel
es wird ausgewertet, sobald die View-Konfiguration analysiert wird, die Bedeutung der DOM hat noch nicht geladen und es wird nichts zurückgegeben.Gibt es eine Reihe von Optionen für die Lösung dieses... alle die mit der Verzögerung der Auswertung der selector, bis nachdem der DOM geladen ist.
Mein persönlicher Favorit ist das bestehen der Auswahl in der Ansicht bei der Instanziierung, nachdem der DOM geladen wurde:
Auch - wie Skylar sagte, Ihre Veranstaltung wurde falsch erklärt.
Hier ist eine funktionierende JSFiddle: http://jsfiddle.net/yj5Pz/5/
el
mit jQuery, wenn es Zeit ist:{ el: 'body', ... }
jetztthis.$el
wird das jQuery-element, das Sie suchen.Für starter, das Event-Objekt ist dieser syntax:
Neben Derick Antwort, kümmern sich darum, den Umfang der DOM-Elemente, die ich versuche zu lösen eine einfache click-Ereignis auf ein element, sondern meine Ansicht.el war auf einen nicht direkten Elternteil , dann ist es aus irgendeinem Grund (vielleicht eine Rekursion bug) nicht funktioniert. Wenn ich änderte die el zu "body" css-Selektor-alles ging gut.