backbone.js प्रपत्र को प्रस्तुत करने के लिए बाध्य करने के लिए रीढ़ की हड्डी कैसे प्राप्त कर सकता हूं?




backbone-views backbone-events (3)

आप बैकन गलत इस्तेमाल कर रहे हैं तो आप जो करना चाहते हैं,

template: my_template_string,
render: function () {
    this.el.innerHTML = this.template();
},
events: {
    "submit #login-form": function (event) {}
}

जहां यह this.template सेट है

<form id="login-form" class="navbar-form">
    <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>
</form>

और क्या यह केवल अर्थ ही नहीं है? आप इनपुट तत्वों से अलग होने के लिए आईडी और कक्षा नाम क्यों चाहते हैं? बीटीडब्लू, आप अभी भी submit पर नग्न कैचॉल submit , लेकिन केवल मेरी विधि में ही,

  • <form> वर्ग, और <form> विशेषता को प्रपत्र के टेम्पलेट से जोड़ा जा सकता है, न कि केवल रीढ़ की हड्डी के दृश्य,
  • क्या आप स्पष्ट रूप से सही सबमिट करेंगे,
  • क्या आप कभी भी एकाधिक सबमिट ईवेंट का समर्थन कर सकते हैं (इस घटना में एक टेम्पलेट के दो रूप हैं)।

मैं दृश्य बनाने के लिए निम्न कोड का उपयोग कर रहा हूं:

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

और टेम्पलेट:

<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>

जब मैं बटन पर बाँध करता हूं, तो लॉगिन फ़ंक्शन को फोन किया जाता है फ़ॉर्म पर बाध्यकारी घटना प्रस्तुत करते हैं, लॉगिन फ़ंक्शन को कॉल नहीं किया जाता। आईडी और फॉर्म टैग टेम्पलेट का हिस्सा हैं, तो मैं बाइंड करने के लिए फॉर्म भी प्राप्त कर सकता हूं, जो कि मैं यहाँ क्या करना नहीं चाहता।

इस मामले में मैं फार्म पर बाँध कैसे करूं?


"submit #login-form" : "login"

मुझे लगता है कि बैकबोन इस आईडी को केवल वंश के बीच खोज पाएंगे I तो यह आपके स्वयं के दृश्य तत्व से मेल नहीं खाएगा आप बस का उपयोग क्यों नहीं करते हैं:

"submit": "login"

जैसा कि आपने परिवर्तन के लिए किया था
सिर्फ यकीन करने के लिए बैकबोन का कोड जांचना होगा।

संपादित करें:
यदि आप एक चयनकर्ता डालते हैं, तो बैकबोन कॉल करेंगे

this.$el.on(event, selector, method);

के बजाय

this.$el.on(event, method);

और jQuery की विधि के बजाय तत्व के वंशजों को चयनकर्ता पर ही लागू होगा, केवल तत्व को छोड़कर।


हो सकता है कि जब आप फॉर्म को सबमिट करते हैं, तो यह केवल फॉर्म जमा करेगी 'जमा करें' घटना। आप कोड के नीचे जोड़ सकते हैं और फिर से कोशिश कर सकते हैं।

$('#id').submit(function(ev) {

});






backbone-events