2012-03-05 11 views
5

आइटम के आईडी को कैसे पता चलेगा मैंने क्लिक किया? मेरी कोड नीचे दिया गया हैक्लिक किए गए आइटम से संबंधित मॉडल का आईडी कैसे ढूंढें?

$(function() { 
    ipl.mvc.view.openings_view = ipl.mvc.view.view_base.extend({ 
    template: '/assets/t/plmt/companies.tmpl.html', 
    ID: '#tmpl_openings', 
    events: { 
     "click #edit": "editpost" 
    }, 
    initialize: function() { 
     var _this = this; 
     _.bindAll(this, 'addOne', 'addAll', 'render', 'editpost'); 
     _this.loadTemplate(_this.template, function() { 
     _this.model = new ipl.mvc.model.companies_model([]); 
     _this.model.view = _this; 
     _this.model.bind('change', _this.render, _this); 

     }); 
    } 

    , 
    render: function() { 
     var _this = this 
     jsonData = _this.model.toJSON(); 
     _.each(jsonData, function(model) { 
     $(_this.ID).tmpl(model).appendTo(_this.el); 
     return _this; 
     }); 
    } 
    , 
    editpost: function(e) { 
     console.log("EDIT CLICKED"); 
     e.preventDefault(); 
     var ele = $(e.target); 
     console.log(ele); 
     _this.model = new ipl.mvc.collection.companies_collection([]); 
     var id = _this.model.get("id"); 
     alert(id); 
    } 
    }); 
}); 

और टेम्पलेट

<a href="!/editpost/${id}" data-id="${id}"><button id="edit" ><img src="/assets/img/pencil.png" /></button></a> 

मैं संपादित समारोह में उपयोग करने के लिए आईडी की जरूरत है, लेकिन टेम्पलेट से ${id} नहीं मिल रहा है, और मैं उन चरणों का पालन करें और मैं इसे नहीं मिला ? टेम्पलेट से क्लिक किए गए आइटम के ${id} कैसे प्राप्त करें?

+0

कृपया कोड आप पोस्ट पर एक नज़र डालें, मुझे विश्वास यह गलत है अगर आप मुझसे पूछें कि इसमें बहुत से बंद ब्रैकेट हैं। अपने कोड को दोबारा सुधारने का प्रयास करें ताकि यह समाधान को खोजने और ढूंढने के लिए दूसरों को अधिक आमंत्रित कर सके – Sander

उत्तर

13

वास्तव में क्या आप की जरूरत यह है: आप एक विधि सही घटना पर निष्पादित किया जाना है (editPost जोड़ा

  1. आप टेम्पलेट

  2. में HTML तत्व पर डेटा-आईडी निर्धारित किया है)

  3. कि editPost विधि में

    आप यह कर सकते हैं:

    editPost: function(e){ 
        e.preventDefault(); 
        var id = $(e.currentTarget).data("id"); 
        var item = this.collection.get(id); 
    } 
    

टिप्पणी मैं अपने कोड भी कई समापन टैग नहीं है देखा है, तो यह यहाँ नहीं चलेगा, और मैं भी अपने editPost में पाया है कि आप केवल इस कोशिश, लेकिन आप केवल इस की घोषणा कभी नहीं। आपको उस विधि में var _this = this; होना चाहिए था।

टिप्पणी 2 मुझे समझ नहीं आता क्यों आप भी इस उदाहरण में एक डेटा-आईडी की जरूरत है, वहाँ एक दृश्य प्रतिपादन के दो तरीके हैं, या तो दृश्य एक संग्रह यह करने के लिए बाध्य है, या यह एक मॉडल है । किसी संग्रह में संग्रह को बाध्य करते समय, आपको किसी भी तरह से आपके संग्रह में सही मॉडल खोजने के लिए क्लिक किए गए तत्व से सही आईडी प्राप्त करने की आवश्यकता हो सकती है

लेकिन आपके उदाहरण पर, आपके दृश्य में एक मॉडल है, इसलिए आप केवल क्या वह 1 आईडी है, जिसे आप this.model.get('id'); पर कॉल करके प्राप्त कर सकते हैं, मुझे विश्वास है कि उपरोक्त से आपका संपूर्ण कोड उदाहरण, एक अन्य उदाहरण से कॉपी किया गया है जहां वे दृश्य में संग्रह का उपयोग करते हैं, क्योंकि आपके प्रतिपादन और डेटा-आईडी प्रॉपर्टी का उपयोग यह सुझाव देता है।

-1

यह एक और (रीढ़ की हड्डी के नए संस्करण?) ऐसा करने का तरीका है: (मैं देख रहा हूँ @Sander अपनी टिप्पणियों में model.get विधि से पता चलता)

var AppointmentView = Backbone.View.extend({ 
    events: { 
    'click' : 'alertTitle' 
    }, 

    alertTitle : function(e) { 
    // this.model.get('id') is what you're looking for 
    alert(this.model.get('title')); 
    } 
}); 
संबंधित मुद्दे