मेरे मॉडल के लिए एम्बर डेटा का उपयोग करने में, कुछ ऐसे मामले हैं जहां मुझे डेटा सीमाओं के आसपास काम करने और मेरे सर्वर पर अन्य अर्ध-आराम वाले यूआरएल तक पहुंचने की आवश्यकता है।एम्बर डीएस के लिए सर्वर यूआरएल प्राप्त करें। मॉडेल क्लास
उदाहरण के लिए, मेरे पास Feed
ऑब्जेक्ट है जो डेटा की स्ट्रीम रिकॉर्ड करता है।
/feeds/:feed_id
क्रम शुरू करने और एक फ़ीड रिकॉर्डिंग बंद करने के लिए, मैं की तरह एक यूआरएल के लिए एक PATCH
भेजने की जरूरत है: मॉडल तक पहुँचने के लिए मैं एक RESTful समाप्ति बिंदु है
/feeds/:feed_id?update_action=start
इसके बाद मैं फिर से लोड कर सकते हैं मेरे मॉडल और उसमें परिलक्षित परिवर्तन देखें।
इस मामले में, मुझे $.ajax
तक पहुंचने की आवश्यकता है और यूआरएल एक एम्बर का उपयोग करने जैसा ही होगा। हालांकि, मैं यह नहीं समझ सकता कि एम्बर से इस जानकारी को कैसे निकाला जाए।
अब तक सबसे अच्छा मैं क्या कर सकते हैं:
DS.Model.reopen
rootForModel: Ember.computed(->
@.store.adapterForType(@).serializer.rootForType(@.constructor)
)
pluralRootForModel: Ember.computed(->
@.store.adapterForType(@).serializer.pluralize(@get("rootForModel"))
)
इस तरह App.FeedItem
का एक उदाहरण के लिए मैं ऐसा कर सकते हैं:
this.get("rootForModel") # feed_item
this.get("pluralRootForModel") # feed_items
और मैं इस के साथ सिंक में रहना होता अनुमान लगा रहा हूँ एडाप्टर आदि
बाद में किए गए किसी भी सेटिंग, मैं कॉल कर सकते हैं जैसे:
$.ajax
url: @get("pluralRootForModel") + "/" + @get("id")
data:
update_action: "start"
type: "PATCH"
क्या यह पूरी तरह से बाएं क्षेत्र में बाहर है? क्या इन यूआरएल को लिखने का कोई और सीधा तरीका है?
एक और (संबंधित समस्या) किसी दिए गए मॉडल के लिए अंडरस्कोर नाम प्राप्त कर रहा है।
Ember.Object.reopenClass
###*
* The underscored name for this.
* i.e. App.MyClass -> my_class
* From an instance, use this.constructor.underscored_class_name()
* @return {String} This classname, underscored.
###
underscored_class_name: ->
_.underscored("#{@}".replace(/^.*?\./g, ""))
यह पागलपन है:
App.MyModelController => my_model_controller
मैं की तरह कुछ किया है? क्या कोई बेहतर तरीका है?
मैं 'DS.RESTAdapter.prototype.buildURL ('my-model-type') पर बस गया – aceofspades