la spina dorsale 0.9.0 changelog dice:In che modo il nuovo hash "eventi" di Backbone View funziona con valori di funzione anziché stringhe nella versione 0.9.0?
eventi di una vista hash possono ora contenere anche valori di funzione diretti come così come i nomi di stringa di metodi vista esistente.
Quando provo quanto segue non funziona, dicendo che il valore per l'evento è undefined
.
var BB = Backbone.View.extend({
'initialize': function() {
this.$el.html('<input type="button" value="Click me!" />');
jQuery('body').html(this.el);
},
'events': {
'click input[type="button"]': this.buttonClicked
},
'buttonClicked': function() {
alert('button clicked!');
}
});
window.b = new BB()
Sto fraintendendo la nuova funzione? Qualcuno può spiegare come funziona in modo diverso da quanto mi aspettassi? Forse è solo la mia sintassi JavaScript/valore di "questo" al momento della definizione che è borked.
Il modo in cui mi sono abituato a farlo ancora funziona:
'events': {
'click input[type="button"]': 'buttonClicked'
},
Molto bene, grazie. L'unica cosa che mi chiedo a questo punto è se ciascuna funzione anonima che ho definito (come ad esempio il "pancake!" Nel tuo esempio) avrà il suo valore di "this" per la vista, o se sarà qualunque sia l'obiettivo di l'evento è Mi sembra che questa linea assicurerebbe che sia applicata alla View stessa: method = _.bind (method, this); –
@awcrud: la riga 1078 (e questo esempio: http://jsfiddle.net/ambiguous/JEavM/1/) indica che la funzione anonima sarà limitata alla vista. –