Używam poniższy kod, żeby utworzyć widok:Jak uzyskać szkielet do wiązania zdarzenia submit do formularza?
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
a szablonu:
<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>
Kiedy wiążę na przycisku, funkcja logowania jest wywoływana. Wiązanie w zdarzeniu składania formularza powoduje, że funkcja logowania nie jest wywoływana. Mogę również uzyskać formularz do powiązania, jeśli identyfikator formularza & jest częścią szablonu, co nie jest tym, co chcę tutaj zrobić.
W jaki sposób mogę powiązać formularz w tym przypadku?
Odpowiednia dokumentacja jest ukryta wewnątrz ['delegateEvents'] (http: // backbonejs.org/# View-delegateEvents): "Pominięcie' selektora' powoduje powiązanie zdarzenia z głównym elementem widoku '(this.el)'. " –
Niestety to nie wyklucza tego, co robił. Cóż, myślę, że to wciąż wystarczająca informacja. – Loamhoof
Przesłanie bez zaznaczenia działało! –