2013-05-24 12 views
7

पर परिवर्तित विशेषता प्राप्त करना इस वैश्विक परिवर्तन घटना में, क्या कोई तरीका है कि मैं यह पता लगा सकता हूं कि कौन सी विशेषता बदली गई थी?परिवर्तन घटना

  • myModel.previousAttributes() का उपयोग करना है, लेकिन यह हमेशा नवीनतम मूल्यों लौटे ... मैं केवल अद्यतन एक सर्वर बातचीत के बाद यह लगता है:

    myModel.on('change', function(model) { 
        // Which attribute changed? 
    }); 
    

    मैं निम्नलिखित की कोशिश की।

  • कठिन गुणों को छेड़छाड़ करना और myModel.hasChanged(attr) का उपयोग करना लेकिन यह हमेशा झूठा हो गया।

क्या यह पूरा करने का कोई तरीका है?

उत्तर

12

आप model.changedAttributes

changedAttributes model.changedAttributes ([गुण]) का उपयोग कर सकते
केवल मॉडल की विशेषताओं का एक हैश को बदल दिया है कि, या गलत पुन: प्राप्त करता है, तो कोई भी कर रहे हैं।
वैकल्पिक रूप से, बाहरी गुण हैश को पास किया जा सकता है, उस हैश में विशेषताओं को वापस कर रहा है जो मॉडल से अलग है। यह है, जो एक दृश्य के कुछ भागों जा अद्यतन करना चाहिए यह पता लगाने के लिए इस्तेमाल किया जा सकता है या क्या जरूरत कॉल सर्वर

उदाहरण के लिए करने के लिए परिवर्तन सिंक करने के लिए किए जाने के लिए

var m = new Backbone.Model({ 
    att1: 'a', 
    att2: 'b', 
    att3: 'c' 
}); 

m.on('change', function() { 
    console.log(m.changedAttributes()); 
    console.log(_.keys(m.changedAttributes())); 
}); 

m.set({ 
    att1: 'd', 
    att3: 'e' 
}); 

और एक डेमो http://jsfiddle.net/nikoshr/NYnqM/

+0

ग्रेट, बस मुझे जो चाहिए वह धन्यवाद – jviotti

+1

मुझे पार्टी के लिए देर हो सकती है। यदि आप बैकबोन 0.9.9 और ऊपर का उपयोग कर रहे हैं .listen का उपयोग करना शुरू करें। इसके बजाय आप कचरा संग्रह से प्रतिरक्षा वाले ऑब्जेक्ट्स के साथ समाप्त नहीं होते हैं। – Ananda

+0

यो ... अच्छा ... धन्यवाद !!! –

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