2012-11-29 20 views
9

ट्विटर बूटस्ट्रैप पॉपओवर में बैकबोन प्रस्तुत दृश्य डालें। समस्या यह है कि उस दृश्य के लिए सामग्री विकल्प रीढ़ की हड्डी की घटनाओं को सम्मिलित करते समय आग लगाना नहीं है। मैंने $ (चयनकर्ता) के साथ परीक्षण के लिए div में दृश्य डाला। एचटीएमएल उपस्थितिShow.render()। एल घटनाएं बिना किसी समस्या के काम करती हैं। अग्रिमबैकबोन ईवेंट और ट्विटर बूटस्ट्रैप पॉपओवर

 attendance = new Attendance() 
     attendance.url = "#{attendanceUrl}/#{attendanceId}" 
     attendance.fetch 
     success: -> 
      attendanceShow = new ExamAttendanceShow({model: attendance }) 
      currentTarget.popover 
      html : true 
      content: -> 
       attendanceShow.render().el 

सर्वश्रेष्ठ संबंध, जॉर्जी।

+1

क्या आपने पॉपओवर पर अपना दृश्य जोड़ने के बाद 'प्रतिनिधि एवेन्ट्स()' चलाने की कोशिश की है? – deleterOfWorlds

+0

हां, मैंने कोशिश की लेकिन सफलता के बिना – Georgi

+0

मैं इस मुद्दे पर घंटों तक फंस गया हूं। क्या आपको एक समाधान मिला? धन्यवाद दोस्त! –

उत्तर

1

जो मैं समझता हूं उससे, आपके कोड और आपके विवरण के आधार पर आप केवल पॉपओवर का उदाहरण बना रहे हैं लेकिन इसे कभी नहीं दिखा रहे हैं। मेरे पास लाइव डेमो काम कर रहा है लेकिन कॉफीस्क्रिप्ट के साथ नहीं (मैं व्यक्तिगत रूप से कॉफीस्क्रिप्ट से नफरत करता हूं), आप नीचे दिए गए कोड और this jsfiddle पर देख सकते हैं।

data1.json

{"content": "lorem ipsum dolor sit amet"} 

index.html

<div class="container"> 
    <div class="row"> 
     <button class="btn" data-target="popover">Popover</button> 
    </div> 
    <div class="row">&nbsp;</div> 
    <div class="row"> 
     <button class="btn" data-action="change-content">Change Content</button> 
    </div> 
</div> 

main.js

var Main = Backbone.View.extend({ 
    model: null, 
    item: null, 
    popover: false, 

    events: { 
     'click .btn[data-target]': 'button_click', 
     'click .btn[data-action="change-content"]': 'change_content' 
    }, 

    initialize: function() { 
     _.bindAll(this); 

     this.model = new PopoverModel(); 
     this.model.view = new PopoverContentView({model: this.model}); 

     this.item = this.$('.btn[data-target]'); 
     this.item.popover({ 
      html: true, 
      content: this.model.view.render().el 
     }); 
    }, 

    button_click: function(event) { 
     if (!this.popover) { 
      this.model.url = 'js/data1.json'; 
      this.model.fetch({ 
       success: this.model_fetched 
      }); 
     } else { 
      this.popover = false; 
     } 
    }, 

    model_fetched: function() { 
     if (!this.popover) { 
      this.item.popover('show'); 
     } else { 
      this.item.popover('hide'); 
     } 

     this.popover = !this.popover; 
    }, 

    change_content: function(event) { 
     this.model.set('content', 'Some random content... ' + parseInt(Math.random() * 10)); 
    } 
}); 

var PopoverModel = Backbone.Model.extend({ 
    defaults: { 
     content: '' 
    } 
}); 

var PopoverContentView = Backbone.View.extend({ 
    initialize: function() { 
     _.bindAll(this); 
     this.listenTo(this.model, 'change', this.render); 
    }, 

    render: function() { 
     this.$el.html(_.template('<%= content %>', this.model.toJSON())); 
     return this; 
    } 
}); 


var main = new Main({ 
    el: '.container' 
}); 
+0

मेरी समस्या तब होती है जब मैं पॉपओवर के अंदर दृश्य डालता हूं, मैं उस दृश्य में ईवेंट संलग्न नहीं कर सकता। धन्यवाद – Georgi

+0

क्या आपके पास एक बेहतर उदाहरण है? शायद मैं आपकी सहायता कर सकता हूँ। –

+0

सुपर सहायक! मेरी समस्या हल धन्यवाद! – streetlight

0

मैं ने वही समस्या, जॉर्जी के जवाब पर विस्तार करने के लिए है, इस प्रयास करें:

एक बटन रखें या आपके पॉपअप में एक लिंक (आपके द्वारा रखे गए गतिशील पाठ की बजाय) और किसी ईवेंट को संभालें, उस पर क्लिक ईवेंट कहें।

+0

यह मुझे भी उत्तर नहीं है, लेकिन सवाल पर विस्तार करने की कोशिश की गई एरिक ने पूछा ... –

+0

यह पुष्टि करना चाहता है कि यह काम करता है। मेरे पास बूटस्ट्रैप का एक पुराना संस्करण था (2.0.4) जहां पॉपओवर स्वचालित रूप से माता-पिता को असाइन नहीं किया गया था। 2.3.0 को अपग्रेड करना इसे ठीक करता है। शोर के लिए खेद है। –

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