Я разработал страницу с одним хранилищем и сеткой для отображения элементов из запроса базы данных. С тех пор краткое изложение расширилось, чтобы охватить динамическую группировку элементов в сетке с помощью перетаскивания.Динамическое создание нескольких магазинов Sencha ExtJS из одного магазина
Было решено, что реализация этой функциональности будет выполняться путем создания на стороне клиента нескольких хранилищ и сеток, так что один запрос GET предоставляет все записи для сетки (ов).
Когда загружено начальное «основное хранилище», функция загрузки загружается через данные в «мастер-магазине» и создает новые магазины (вычерчивание вишней записей для указанного магазина) и новую сетку для каждого магазина , Сетки будут иметь динамически генерируемые заголовки из содержимого, но будут иметь простые идентификаторы для обозначения групп в базе данных.
Пользователь затем перетаскивает и удаляет элементы из каждой сетки в другие сетки по мере необходимости, удаляя элемент из «старого» магазина и создавая его в «новом» хранилище, а при этом также меняет свой идентификатор группы.
Пользователь также сможет создавать новые группы, которые генерируют пустые хранилища и сопутствующие сетки.
После внесения изменений «главное хранилище» очищается от данных, и каждый магазин затем агрегируется обратно в «главное хранилище», а затем выполняет синхронизацию как обычно.
Я уверен, что при создании хранилища и сетки я могу как часть функции присваивать идентификаторы, которые связывают их вместе и дифференцируют их от других магазинов/сетей, но я не знаю, как получить уникальный данные из «главного хранилища» в каждый дочерний магазин.
Это правильный способ посмотреть на это? Цель состоит в том, чтобы избежать множественных экземпляров одного и того же хранилища и применения фильтров, поскольку это не обязательно будет вносить какие-либо изменения в идентификатор группы и избегать использования нескольких магазинов, чтобы сохранить накладные расходы на запрос сервера на отдельные запросы.
Если это (по крайней мере, «a», если не обязательно «правильный») способ сделать это, как мне установить данные в новых магазинах из «главного хранилища»? Я предполагаю, что могу просто перебирать записи в «master store», присваивать массив и применять массив как источник данных каким-то образом, но, как уже было сказано, я не знаю, как это сделать.
Пример модели и хранить код:
Ext.define('ConfirmationModel', {
extend: 'Ext.data.Model',
fields: [
'GroupName',
'ItemType',
'ItemTypeId',
'JobNo',
'ItemNo',
'Thickness',
'Cutter',
'CutterId',
'Source',
'Qty',
'Material',
'MaterialId',
'Type',
'TypeId',
'Work',
'WorkId',
'InternalFinish',
'ExternalFinish',
'Notes',
'Documented?',
'ImportDate',
'ImportCheck'
]
});
confirmationStore = Ext.create('Ext.data.Store',{
id: 'confirmationStore',
model: 'ConfirmationModel',
autoLoad: true,
proxy: {
// load using HTTP
type: 'ajax',
url: '<?= $site_url ?>Production/ConfirmationJSON/<?php echo $job_no ?>',
pageParam: false, //to remove param "page"
startParam: false, //to remove param "start"
limitParam: false, //to remove param "limit"
noCache: false, //to remove param "_dc"
reader: {
type: 'json',
model: 'ConfirmationModel'
}
},
groupField: 'GroupName'
});
РЕДАКТИРОВАТЬ:
У меня есть один «мастер-магазин», и в нем, каждая строка будет иметь GroupName, такие как (для краткости) «группы 1' , „группе 2“ и т.д. Мне нужно производить, из „главного магазина“, далее магазинов, каждый ищет что-то вроде:
group1Store = Ext.create('Ext.data.Store',{
id: 'Group 1',
model: 'ConfirmationModel',
autoLoad: false,
proxy: {
// load using HTTP
type: 'memory',
reader: {
type: 'json'
}
}
});
group2Store = Ext.create('Ext.data.Store',{
id: 'Group 2',
model: 'ConfirmationModel',
autoLoad: false,
proxy: {
// load using HTTP
type: 'memory',
reader: {
type: 'json'
}
}
});
...
group#Store = Ext.create('Ext.data.Store',{
id: 'Group #',
model: 'ConfirmationModel',
autoLoad: false,
proxy: {
// load using HTTP
type: 'memory',
reader: {
type: 'json'
}
}
});
этих магазинов будут содержать только запись, относящуюся к этой группе. Мои мысли состоят в том, чтобы сначала перебрать «главный магазин» и получить все уникальные имена групп в массив, затем создать массив для каждого имени группы и нажать из «главного хранилища» только те записи, где совпадает их имя группы.
Оттуда создайте многомерный массив, чтобы сначала сохранить имя группы, затем массив записей для этого имени группы, затем сгенерировать хранилище и установить имя/id/storeId = group [0] и data = group [ 1]. Возможно, это длинный ветер, но он должен генерировать все необходимые магазины независимо от количества групп.
Это, как представляется, не создает несколько магазинов из одного магазина; похоже, это просто. Я обновлю свой вопрос, чтобы попытаться лучше представить свои требования. –
Вы должны вызывать эти функции несколько раз [количество дочерних магазинов, которые вы хотите создать]. Но вам может потребоваться изменить условие if в соответствии с вашим требованием (оно может быть передано в качестве другого параметра для этой функции). Надеюсь, он решает вашу проблему. – Rajinder