backbone.js Veranstaltungen und el
Okay, also ich habe gelesen, einige andere Fragen in Bezug auf Backbone-Ansichten und Ereignisse, die nicht gefeuert zu werden, aber ich bin immer noch nicht ist es leider. Ich war Herumspielen mit Rückgrat für etwa einen Tag, so dass ich sicher bin, fehlt mir etwas grundlegendes. Hier ein jsfiddle mit was ich arbeite:
http://jsfiddle.net/siyegen/e7sNN/3/
(function($) {
var GridView = Backbone.View.extend({
tagName: 'div',
className: 'grid-view',
initialize: function() {
_.bindAll(this, 'render', 'okay');
},
events: {
'click .grid-view': 'okay'
},
okay: function() {
alert('moo');
},
render: function() {
$(this.el).text('Some Cow');
return this;
}
});
var AppView = Backbone.View.extend({
el: $('body'),
initialize: function() {
_.bindAll(this, 'render', 'buildGrid');
this.render();
},
events: {
'click button#buildGrid': 'buildGrid'
},
render: function() {
$(this.el).append($('<div>').addClass('gridApp'));
$(this.el).append('<button id="buildGrid">Build</button>');
},
buildGrid: function() {
var gridView = new GridView();
this.$('.gridApp').html(gridView.render().el);
}
});
var appView = new AppView();
})(jQuery);
Den okay
Ereignis auf das GridView-Steuerelements wird nicht ausgelöst, ich nehme an, weil div.grid-view
nicht vorhanden, wenn das Ereignis ist zunächst gebunden. Wie sollte ich damit umgehen Sie die Bindung und das feuern eines Ereignisses, gebaut auf einer Ansicht dynamisch? (Es ist zudem ein kurzes Beispiel, aber fühlen Sie sich frei, mich anzubrüllen, wenn ich etwas anderes zu tun, ich sollte nicht)
el
ist div-tag mit .grid-view
. und Sie finden .grid-view
Klasse name-element in das div . die wirst du nicht bekommen .InformationsquelleAutor siyegen | 2011-09-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein problem ist, dass die Ereignisse auf GridView:
sagen:
Ereignisse gebunden sind, mit diesem Ausschnitt aus
backbone.js
:Also die
.grid-view
element muss enthalten sein in Ihrem GridView istthis.el
und Ihrethis.el
ist<div class="grid-view">
. Wenn Sie Ihreevents
:hören Sie Ihren Kühen (oder "hören Sie in Ihrem Kopf" nach dem Lesen der Warnmeldung, je nachdem, wie verrückt, das problem hat Sie).
Festen fiddle: http://jsfiddle.net/ambiguous/5dhDW/
Recht. Haben Sie einen Blick auf die erste Filiale der
backbone.js
snippet enthalten ich; wenn kein Selektor, dann wird das Ereignis gebunden ist, direkt anthis.el
mit$(this.el).bind(eventName, method);
, wenn es ist ein Selektor, der dann das Ereignis gebunden ist, mitdelegate
.aber was, wenn ich will, Feuer-event nur, wenn
this.el
hatgrid-view
Klasse ?Sie würden wahrscheinlich haben, um zu überprüfen
this.$el.hasClass('grid-view')
im inneren der click-handler oder manuell hinzufügen und entfernen Sie ein raw-click-handler, wie nötig, ohne durchevents
.Okay es gibt also keine direkte Möglichkeit.
InformationsquelleAutor mu is too short