Здесь вопрос состоит из двух частей.Первый - технический вопрос о том, как Sencha анализирует JSON и читает магазины.
У меня есть две модели, Order и User:
Ext.regModel('Order', {
fields: [
{name: 'id', type: 'int'},
{name: 'user_id', type: 'int'},
{name: 'name', type: 'string'},
{name: 'price', type: 'float'},
],
belongsTo: 'User'
});
Ext.regModel('User',{
fields: [
{name: 'id', type: 'int'},
{name: 'first_name', type: 'string'},
{name: 'last_name', type: 'string'},
{name: 'email', type: 'string'},
],
associations:[
{type: 'hasMany', model: 'Order', name: 'orders'}
]
});
В целом, довольно простая ассоциация.У меня есть следующий JSON, который получен с сервера:
[
{
"id":22,
"price":0.0,
"name":"My First Order",
"user_id":3,
"user": {
"id": 3,
"first_name": "Michael",
"last_name": "Jones",
"email": "michaeljones@email.com"
}
}
]
Наконец, вот мой магазин:
var o = new Ext.data.Store({
model: "Order",
sorters: "name",
getGroupString: function(record){
return record.get('name')[0]
},
proxy: {
type: 'ajax',
url: '/orders',
headers: {'Accept': 'application/json'},
reader: {
type: 'json'
}
},
autoLoad: true
});
Ext.regStore("Orders",o);
Когда я читаю данные заказа, я не могу найти ни одногоупоминание о пользователе.Итак, затем я нашел это удобное руководство в документации Sencha: http://dev.sencha.com/deploy/touch/docs/?class=Ext.data.Reader
Однако в документации показан только пример для ассоциации hasMany - она не включает в себя одно извлечение данных из ассоциации ownTo.Я попытался поработать в Интернете пару часов и пришел с пустыми руками.Как правильно извлечь пользовательское поле из поля заказа?
ОБНОВЛЕНИЕ: Я удалил параметры прокси и автозагрузки в своем хранилище и заменил их параметром данных, который содержалта же самая точная строка JSON, возвращенная моим сервером в моем примере.И угадай что?Это сработало.Однако мне все еще нужно исправить эту проблему, чтобы она работала при обмене данными с моим сервером!Есть идеи?
И вторая часть: Что вы думаете о Sencha Touch?Структура кажется очень мощной, но документация и примеры кажутся довольно слабыми.Я также обеспокоен тем, насколько трудным стал анализ этих данных.Есть ли лучшие альтернативы там?