Sto utilizzando il seguente codice per creare la vista:Come si ottiene backbone per associare l'evento di invio a un modulo?
LoginForm = Backbone.View.extend({
tagName :"form"
,id : "login-form"
,className :"navbar-form"
,initialize: function() {
this.model = new StackMob.User();
this.render();
}
,render: function() {
$(this.el).html(this.template());
return this;
}
,events : {
"change" : "change"
,"submit #login-form" : "login"
}
,login : function(event) {
event.preventDefault();
var self = this;
this.model.login(true, {
success: function(model) {
app.alertSuccess("User logged in");
self.render();
}
,error: function(model, response) {
app.alertError("Could not login user: " + response.error_description);
}
});
event.currentTarget.checkValidity();
return false;
}
// rest of code
E il modello:
<input name="username" class="span2" type="email" placeholder="Email" required >
<input name="password" class="span2" type="password" placeholder="Password" required >
<button id="login-button" type="submit" class="btn">Sign in</button>
Quando mi legano sul pulsante, la funzione di login viene chiamata. Binding sul modulo submit event, la funzione di login non viene chiamata. Posso anche ottenere il modulo da associare se il tag form id & fa parte del modello, che non è quello che voglio fare qui.
Come si esegue il binding del modulo di invio in questo caso?
La documentazione pertinente è nascosta all'interno di ['delegateEvents'] (http: // backbonejs.org/# View-delegateEvents) documentazione: "Omettendo il selettore' 'l'evento viene associato all'elemento radice della vista' (this.el) '." –
Sfortunatamente questo non esclude ciò che stava facendo. Beh, immagino siano ancora abbastanza informazioni. – Loamhoof
L'invio senza selezione ha funzionato! –