update : способ получить доступ к одному объекту json с помощью sencha - просто сделать простой запрос и не использовать хранилище данных.Вот пример кода, который делает это:
Ext.ns('myNS');
Ext.Ajax.request({
url: 'my url',
method: 'GET',
params: {
someParam: 'someValue'
},
success: function(result, request) {
var json = Ext.decode(result.responseText);
myNS.loadedPerson = json.person;
},
failure: function(result, request) {
Ext.Msg.alert('Error!', 'There was a problem while loading the data...');
}
});
Если вы все еще настаиваете на использовании хранилища данных - вот возможное решение на стороне сервера, которое поддерживает спокойный API: вот что я сделал для того, чтобычтобы сохранить мой API спокойным:
Я добавил новый тип MIME под названием sencha, который ведет себя точно так же, как json, но также заключает json в круглые скобки [].
Это может быть (и, вероятно,) излишнее, но это не мешает моему JSON API.Вот код для нового типа MIME:
Mime::Type.register_alias "application/json", :sencha
#Add the renderer, and register a responder:
require 'action_controller/metal/renderers'
require 'action_controller/metal/responder'
# This is also how Rails internally implements its :json and :xml renderers
# Rarely used, nevertheless public API
ActionController::Renderers.add :sencha do |json, options|
json = ActiveSupport::JSON.encode(json) unless json.respond_to?(:to_str)
# Add [ ] around the response
json = "[#{json}]"
json = "#{options[:callback]}(#{json})" unless options[:callback].blank?
self.content_type ||= Mime::JSON
self.response_body = json
end
# This sets up a default render call for when you do
# respond_to do |format|
# format.sencha
# end
class ActionController::Responder
def to_sencha
controller.render :sencha => resource
end
end
, это позволяет мне определить следующий прокси (обратите внимание на формат: 'sencha') на стороне клиента:
proxy: {
type: 'rest',
format: 'sencha',
url : my server url,
reader: {
type: 'json',
record: 'person'
}
}
Таким образом, я все еще могу сохранять успокоительный API и рассматривать представление Sencha в формате json как другой способ представления ресурсов (например, json / xml / yaml)