मैं नेस्टेड यूआरएल नहीं बनाऊंगा जब तक कि आपके पास वास्तव में इसके लिए कोई अच्छा मामला न हो। प्रत्येक संसाधन को संसाधन नाम और आईडी द्वारा परिभाषित किया जा सकता है। वस्तुओं के बीच संबंध आंतरिक है।
http://foo.com/a/:id.json
http://foo.com/b/:id.json
http://foo.com/c/:id.json
कहा जा रहा है कि नेस्टेड ऑब्जेक्ट्स को खींचने के लिए सर्वर पर बहुत सारी हिट वास्तव में आदर्श नहीं हैं। बेहतर होगा कि तुम एक भी संसाधन है कि नेस्टेड json
http://foo.com/a/:id.json
रिटर्न उदाहरण के लिए कर रहे हैं डेटा मैं अपने सर्वर से वापस पाने के लग रहा है उप नोड्स
तरह
{
"id": 372,
"context": "office_work",
"date_of_entry": "2011-7-05 15:22:00",
"blood_glucose_measurement": 98,
"food": {
"exchanges": "98",
"list": "burger fries"
},
"exercise": {
"duration": "28",
"list": "running shopping"
}
}
है कि व्यक्ति लेता है एक कस्टम नियंत्रक द्वारा इकट्ठे होते हैं डीबी रिकॉर्ड और डेटा का एक पेड़ बनाता है।
हालांकि आप क्योंकि backbone.js देशी रूप केवल फ्लैट संरचनाओं का समर्थन करता है मुसीबत में हैं। मैंने संरचनाओं जैसे प्रसंस्करण पेड़ का समर्थन करने के लिए बुनियादी बैकबोन में कुछ संशोधन किए हैं। मॉडल।
यदि यह आपके लिए उपयोग किया जा सकता है तो मैं इसे यहां पेस्ट कर दूंगा।
#= require jquery
#= require underscore
#= require backbone
#
class RailsModel extends Backbone.Model
initialize: (attributes) ->
data = {}
for k,v of @attributes
if v.constructor.name == "Object"
data[k] = new RailsModel(v)
@set data, {silent: true}
get: (field)->
val = @
first = true
for p in field.split('/')
if first
val = super(p)
else
# This allows returning *undefined* rather
# than an exception if the parent of a deeply
# nested node does not exist.
val = if val? then val.get(p) else undefined
first = false
val
# Allow heirarchical setting of objects
#
# Example
#
# model.set_field('root/child', 10)
#
# Will create the path if it does not exist
set_field: (field, value, silent=false)->
path = field.split('/')
node = undefined
val = @
for p in field.split('/')
node = val
val = node.get(p)
if not val?
data = {}
val = new RailsModel
data[p] = val
node.set data
data = {}
data[p] = value
node.set data
if not silent and /\//.test(field)
@trigger("change:#{field}", @model, value)
@trigger("change", @model)
window.RailsModel = RailsModel
आप की तरह
model = new RailsModel
model.url = "/data"
model.fetch()
model.get('excercise/duration')
model.set_field('excercise/duration', 25)
अंतिम पंक्ति के लिए इसका इस्तेमाल कर सकते हैं एक घटना को ट्रिगर किया जाएगा "परिवर्तन: अभ्यास/अवधि"