2011-06-30 14 views
6

मैं निम्नलिखित रीढ़ दृश्य है:backbone.js लाने बदली हुई घटना के बाद एक सफल फायरिंग को नहीं लाया जा

वर्ग अवलोकन विधि प्रस्तुत करना

class Observations extends Backbone.Collection 
    model: Observation 

    constructor: -> 
    @url = _observationsUrl 

class ObservationsView extends Backbone.View 
    el: $('#observations') 

    initialize: -> 
    _.bindAll @  
    @model.bind 'changed', @render 
    @model.view = @ 
    that = @ 
    @model.fetch { 
     success: -> 
     alert('success') 
     that.model.trigger 'changed' 
    } 

    render: => 
     alert('rendering baby') 

class ObservationsController extends Backbone.Controller 
    initialize: -> 
    observations = new Observations() 
    observationsView = new ObservationsView(model: observations) 

मैं बाध्यकारी हूँ मॉडल की बदली हुई घटना Backbone.Model फैली ObservationsView के। मॉडल एक रीढ़ की हड्डी संग्रह है।

fetch सफलतापूर्वक काम कर रहा है लेकिन बदली गई घटना को निकाल दिया नहीं जा रहा है। मैं निराशा से बाहर मैनुअल ट्रिगर की कोशिश कर रहा हूँ।

क्या कोई देख सकता है कि मैं क्या गलत कर रहा हूं?

उत्तर

5

घटना को 'बदला' नहीं कहा जाता है। मॉडल के संग्रह को सर्वर से रीफ्रेश करने के बाद ट्रिगर किया गया ईवेंट 'रीफ्रेश' है।

'परिवर्तन' घटना वास्तव में अधिक जटिल है। यह एक मॉडल है कि ट्रिगर किए जाने पर जब भी आप .set() फोन पर एक घटना है, और यह हमेशा विशेषता है, इसलिए आपको जैसी चीजों के बारे में चाहते हैं:

this.model.bind('change:username', _.bind(this.update_username_display, this)) 

हमेशा की तरह, backbone.js स्रोत कोड अत्यंत पठनीय है।

+1

मॉडल के संग्रह को रीफ्रेश करने के बाद ट्रिगर किया गया ईवेंट वास्तव में 'रीसेट' नहीं है, न कि 'ताज़ा करें'। –

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