В наличии 2 магазина. Мне нужны данные из 1-го хранилища в 2-м магазине-конструкторе. Как это можно сделать?ExtJS 6. Используйте данные из 1-го магазина в 2-м магазине-конструкторе
ответ
Это было бы довольно легко, но бесполезно.
Для достижения того, что вы хотите, вы должны создать store2 из события load() store1, и вы не можете привязывать хранилище к любому компоненту перед этим событием загрузки.
Ext.define('MyApp.store.Store1',{
...
listeners:{
load:function(store, records) {
var store2 = Ext.getStore("store2") || Ext.create('MyApp.store.Store2',{
store1data: records
});
Ext.getCmp("someCombobox").bindStore(store2); // you would have to use ext-empty-store on the combobox before, or else it may trigger store creation too early
}
НО это не хороший стиль программирования и не служит какой-либо реальной цели. Обычно вы хотите вызвать некоторую функцию для store2 снова всякий раз, когда store1 получает новые данные. Почти ничего не нужно делать во время строительства магазина, что не может быть сделано после использования reconfigure
или других методов магазина. (заметное исключение: вы должны решить во время строительства, будь то хранилище массивов или хранилище json или хранилище деревьев).
Так, например, вы можете определить метод на store2 и называют, что только после того, как store1 была перезагружена:
store2.someFunction = function(store1Records) {
var store2 = this;
Ext.each(store1Records,function(record) {
store2.getProxy().setExtraParam(record.get("paramName"),record.get("paramValue"));
});
store2.load();
}
store1.on('load',function(store, records) {
store2.someFunction(records);
});
Почему вы не можете просто использовать 'store2.loadData()'? Простой 'store2.loadData (store1.getRange())' должен работать. – ASP
Я пробовал, это не помогает. Каким-то образом данные загружаются только после всех конструкторов. Даже если я сделал первый магазин синхронным. – anastsiacrs
Вы должны действительно опубликовать код, чтобы получить представление о вашем рабочем процессе. В настоящее время я считаю, что ваш рабочий процесс просто не работает. Вам никогда не нужно предоставлять какие-либо данные в конструкторе хранилища. Изменить: Или вы просто не имеете в виду конструктор, а объект конфигурации. См. Здесь: http://docs.sencha.com/extjs/6.0/6.0.2-classic/#!/api/Ext.data.Store – ASP