मैं बैकबोन संग्रह और मॉडल के माध्यम से लोडिंग डेटा को संचालित करने के लिए jQuery की डिफरर्ड ऑब्जेक्ट का उपयोग करने में सक्षम होना चाहता हूं। मॉडल या संग्रह उदाहरण को शामिल करने के लिए किए गए और असफल कॉलबैक के लिए प्रदान किए गए तर्कों को संशोधित करने का कोई तरीका है? मैं निम्नलिखित की तरह कुछ envisioning हूँ:क्या मैं हल/विफल कॉलबैक के लिए दिए गए तर्कों को संशोधित करने के लिए jQuery की deferred.pipe विधि का उपयोग कर सकता हूं?
var _sync = Backbone.sync;
Backbone.sync = function() {
var jqXhr = _sync.apply(this, arguments);
var self = this;
return jqXhr.pipe(function() {
var cbArgs = [self];
cbArgs.push.apply(cbArgs, arguments);
return cbArgs;
}
}
...
var c = new Backbone.Collection();
c.url = "/path/to/resources";
c.fetch().then(function(collection, data, textStatus, jqXhr) {
// do stuff with collection
});
बेशक
, के बाद से फिल्टर एक सरणी लौटा रहा है, किया कॉलबैक बल्कि प्रगणित तर्क से, एक सरणी के साथ शुरू हो जाती है। जहां तक मैं देख सकता हूं, पाइप केवल प्रदान किए गए तर्कों को संशोधित कर सकता है, न जोड़ना। किसी भी सुझाव की सराहना की जाएगी।
संपादित करें: यह एक बहुत ही सरल उदाहरण है; चूंकि मूल संग्रह पर एक बंद किया गया है, इसलिए मैं बस उस पर काम कर सकता हूं। हालांकि, उपयोग का मामला यह है कि एकाधिक बैकबोन दृश्य उसी डेटा पर भरोसा कर सकते हैं, इसलिए मैं डिफर्ड और संग्रह उदाहरण दोनों की बजाय इन विचारों पर केवल jQuery डिफरर्ड ऑब्जेक्ट की आपूर्ति करने में सक्षम होना चाहता हूं।
एक और संपादन: नीचे एक समाधान पोस्ट किया गया, लेकिन कोई अन्य सुझाव स्वागत है।
Edite डी को नए $ के साथ मूल jqXhr का विस्तार करने के लिए। डिफर्ड, सभी AJAX- विशिष्ट तरीकों (.success, .abort, आदि) के लिए समर्थन बनाए रखना। – philm