2011-10-14 17 views
10

मैं Backbone.sync को ओवरराइड करना चाहता हूं लेकिन मेरे अतिरिक्त के बाद मूल Backbone.sync कार्यक्षमता भी चलाना है। मुझे लगता है कि जावा में एक सुपरक्लास पर सुपर कॉलिंग की तरह। क्या पिछले सभी कोड को कॉपी करने के अलावा ऐसा करने का कोई तरीका है?Backbone.sync को ओवरराइड करें लेकिन इसकी पिछली कार्यक्षमता को सहेजें

उत्तर

15

जावास्क्रिप्ट में, आप किसी भी गुण या विधि को एक चर में स्टोर कर सकते हैं। निम्न उदाहरण Backbone.sync को किसी अन्य चर पर असाइन करेगा और फिर आपके फ़ंक्शन के अंत में इसे आपके सभी Backbone.sync फ़ंक्शन पर भेजे गए सभी चर के साथ कॉल करें।

var originalSync = Backbone.sync; 
Backbone.sync = function() { 
    // Your code here. 
    return originalSync.apply(Backbone, arguments); 
}; 
+0

बिल्कुल सही! धन्यवाद। – kreek

6

answer ऊपर ब्रायन निकल द्वारा प्रदान की वास्तव में रीढ़ को पार कर जाएगी के sync विधि है, जो सभी रीढ़ मॉडल को प्रभावित करेगा। क्या आपने सोचा था एक व्यक्ति मॉडल प्रकार के लिए sync ओवरराइड करने के लिए है, तो आप के बजाय पसंद कर सकते हैं निम्नलिखित पैटर्न (भी the Backbone docs से सही हस्ताक्षर के साथ sync ओवरराइड करने के लिए सुनिश्चित करने के):

var YourModel = Backbone.Model.extend({ 
    sync: function(method, model, options) { 
     // do your custom work here 
     return Backbone.Model.prototype.sync.call(this, method, model, options); 
    } 
}); 

के बारे में अधिक पूर्ण जानकारी के लिए यह कैसे काम करता है, कृपया Backbone's annotated source स्वयं देखें। उम्मीद है की वो मदद करदे।

+1

यह 'Backbone.Model.prototype.sync.call (आदि आदि) नहीं होना चाहिए? (.Model गुम है) – mix3d

+0

हाँ, सुधार के लिए धन्यवाद – bosgood

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