2011-02-05 21 views
22

मेरे पास एक साधारण टोडो सूची है, और सभी उम्मीद के अनुसार प्रतिपादन कर रहे हैं, लेकिन जब मैं संपादन फ़ॉर्म में सबमिट बटन पर क्लिक करता हूं, तो फॉर्म सबमिट किया जाता है (GET/todo_items), और पृष्ठ को फिर से लोड किया जाता है, केवल संपादन फ़ॉर्म दिखाता है । "सबमिट फॉर्म" ईवेंट बाध्य नहीं है और मैं यह नहीं समझ सकता कि क्यों। मैं क्या खो रहा हूँ?Backbone.js: यह घटना क्यों बंधी नहीं है?

<script id="edit_form" type="text/html"> 
    <form> 
    <label for="title">Title:</label> 
    <input name="title" type="text" value="{{title}}" /> 
    <button>Save</button> 
    </form> 
</script> 

उत्तर

25

बैकबोन el तत्व पर प्रतिनिधियों का उपयोग करता है। यदि आप "एल" निर्दिष्ट नहीं करते हैं या अपना दृश्य प्रस्तुत करने के लिए "el" का उपयोग नहीं करते हैं, तो ईवेंट प्रतिनिधिमंडल काम नहीं करेगा।

edit = new App.Views.Edit({el: $("#edit_area")}) 

इसे करने के लिए this.el के रूप में हर जगह आपके विचार कोड में, विशेष रूप से अपने प्रस्तुत करना में देखें: इसके बजाय

$("#edit_area") 
अपने प्रस्तुत करना, निर्माता में "एल" विकल्प के रूप में इसे पारित भीतर

करने का ।

+0

इस उत्तर के लिए धन्यवाद, इसलिए '$ ('# edit_area')। Html ("ब्लाह"); काम नहीं करेगा। मैं पूरे दृश्य को प्रस्तुत किए बिना तत्व के एचटीएमएल को कैसे सेट कर सकता हूं? –

0

इस के साथ monkeying के कई घंटे के बाद, यह बाद मैं स्पष्ट रूप से देखने पर el निर्धारित करते हैं, और render समारोह में $(this.el) इस्तेमाल किया काम:

App.Views.Edit = Backbone.View.extend({ 
    events: { 
    "submit form": "save" 
    }, 
    initialize: function(){ 
    this.render(); 
    }, 
    save: function(){ 
    var self = this; 
    var msg = this.model.isNew() ? 'Successfully created!' : 'Saved!'; 

    this.model.save({ 
     title: this.$('[name=title]').val(), 

     success: function(model, resp){ 
     console.log('good'); 
     new App.Views.Notice({message: msg}); 
     self.model = model; 
     self.render(); 
     self.delegateEvents(); 
     Backbone.history.saveLocation('todo_items/'+ model.id); 
     $('#edit_area').html(''); 
     }, 
     error: function(){ 
     console.log('bad'); 
     new App.Views.Error(); 
     } 
    }); 

    return false; 
    }, 
    render: function(){ 
    $('#edit_area').html(ich.edit_form(this.model.toJSON())); 
    } 
}); 

यहाँ संपादित रूप है। अजीब।

+0

क्या आप अपना उत्तर स्पष्टीकरण/पोस्ट कर सकते हैं? धन्यवाद! – Matt

+0

अपनी दूसरी पोस्ट पर मेरा उत्तर देखें - http://stackoverflow.com/questions/5624929/backbone-view-el-confusion/5757160#5757160 – LeRoy

संबंधित मुद्दे