मेरी समझ से बैकबोन जेएस मॉडल का डिफ़ॉल्ट व्यवहार संग्रह के यूआरएल, को वापस करने के लिए मॉडल को urlRoot
निर्दिष्ट किया गया है। मुझे काम करने का व्यवहार नहीं मिल रहा है।backboneJS model.url collection.url
प्रलेखन से:
model.url() ... प्रपत्र के URL उत्पन्न करता है: "[collection.url]/[id]" डिफ़ॉल्ट रूप से, लेकिन आप एक स्पष्ट निर्दिष्ट करके भी पार कर जाते urlRoot अगर मॉडल के संग्रह को ध्यान में नहीं रखा जाना चाहिए।
यहाँ मेरी संग्रह, और मॉडल क्रमशः है:
var MyCollection = Backbone.Collection.extend({
model: Model,
initialize: function(options){
this.options = options || {};
},
url: function(){
return "/theurl/" + this.options.param;
}
});
return MyCollection;
...
var MyModel = Backbone.Model.extend({
urlRoot: '/theurl',
initialize: function() {
}
});
return MyModel;
जब एक मॉडल एक संग्रह के बिना लोड किया जाता है, यह बहुत अच्छा काम करता है और /theurl
को सबमिट करता है, लेकिन जब इसे संग्रह में लोड किया जाता है, तो सभी विधियां /theurl/param/
पर सबमिट होती हैं।
यदि मैं दस्तावेज़ को सही ढंग से समझ रहा हूं, तो मॉडल के urlRoot
को इस व्यवहार को ओवरराइड करना चाहिए; और फिर भी मॉडल यूआरएल /theurl/param/{MODEL-ID}
होना चाहिए।
मुझे क्या याद आ रही है/गलतफहमी पर कोई विचार?
...
पुनश्च: model: Model
संग्रह से RequireJS
जवाब के लिए धन्यवाद। दस्तावेज़ीकरण वहां बहुत अस्पष्ट लगता है। संग्रह यूआरएल के अंत में मॉडल आईडी क्यों नहीं जोड़ रहा है इस पर कोई विचार? – caleb
कुछ चीजें हैं। क्या आपने अभी क्लाइंट पर मॉडल बनाया है? यदि ऐसा है तो इसमें एक आईडी नहीं होगी क्योंकि इसे अभी तक सर्वर में सहेजा नहीं गया है। इस मामले में केवल एक सीआईडी होगा। – dcarson
मुझे लगता है कि इसके बजाय यह कहना चाहिए: 'yourModel.save ({}, {url: yourModel.urlRoot}); '। जिस तरह से यह लिखा गया है वह ऑब्जेक्ट पर 'url' प्रॉपर्टी' सेट करने जा रहा है क्योंकि 'सेव' के लिए पहला तर्क एक विशेषता हैश है। – flyingL123