Показать сообщение отдельно
  #1 (permalink)  
Старый 14.07.2014, 12:19
Аватар для Infarch
Профессор
Отправить личное сообщение для Infarch Посмотреть профиль Найти все сообщения от Infarch
 
Регистрация: 06.06.2014
Сообщений: 292

ExtJS5 - модель и схема
Здравствуйте.
Пытаюсь реализовать пример по работе с моделями и схемой. Нашел вот этот ресурс: http://www.sencha.com/products/extjs...s-data-package и начал пробовать. Базовая модель:
Ext.define("Communication.model.Base", {
	extend: "Ext.data.Model"
	,schema: {
		namespace: 'Communication.model',  // remove this pattern from entity names
		proxy: {     // Ext.util.ObjectTemplate
			type: "ajax",
			url: "/json?cmd=communication.api&entity={entityName}",
			reader: {
				type: "json",
				rootProperty: "{entityName:lowercase}"
			}
		}
	}

});


От нее наследую:
Ext.define("Communication.model.layout.Tabs", {
	extend: "Communication.model.Base",
	fields: [
		"name"
	]
});


EntityName получается "layout.Tabs". С сервера возвращаю json, созданный из следующей структуры:
my $data = {
		"layout.tabs" => [
			{name=>"Summary"},
			{name=>"Access"},
			{name=>"s1"},
			{name=>"s2"},
		]
	};


Но вот когда я эту модель ("Communication.model.layout.Tabs") подключаю к стору и загружаю его, он не видит данные.

var store = new Ext.data.Store ({
    	model: "Communication.model.layout.Tabs"
		});
		store.load({
			callback:function(records, operation, success){
				console.log(success);
				console.log(records);
			}
		});


В логе я вижу что success=true, но records - пустой массив. Если я формирую json как простой массив, не используя rootProperty, то данные приходят нормально. Вопрос: зачем тогда вообще этот параметр? Я чего то не понимаю... Как им пользоваться?
Ответить с цитированием