EXT JS получает данные JSON асинхронно и загружает хранилище с помощью прокси ajax
Во-первых, я начинающий extjs. У меня проблемы с загрузкой моего магазина с использованием прокси-сервера ajax.
Вот моя модель.
Ext.define('alertTemplates', {
extend: 'Ext.data.Model',
fields: ['text','config', {name: 'label', convert: function(v,record) {
if (Ext.isEmpty(record.data.text))
return nodeTemplate.apply(record.data.config);
else return record.data.text;
}}]
});
Попытка загрузить магазин
var store = Ext.create('Ext.data.TreeStore', {
model: 'alertTemplates',
proxy:{
type: 'ajax',
url: '/alfresco/service/alertTemplates.json?alf_ticket=' + user.authTicket,
reader:{
root:'children',
type: 'json'
},
autoLoad: true,
excludeContext: true,
method: 'GET',
params: {
nodeRef: currentProject.nodeRef
},
scope: this,
listeners: {
load: function(){
console.log('loaded');
}
}
}
});
store.load();
Я знаю, что правильно извлекаю данные. Я использовал код ниже, и ответ содержал код json, который я пытаюсь получить. Правильно ли я подхожу к этому?
Jx.Utils.ajax({
url: '/alfresco/service/alertTemplates.json?alf_ticket=' + user.authTicket,
excludeContext: true,
method: 'GET',
params: {
nodeRef: currentProject.nodeRef
},
scope: this,
success: function (response)
{
var alertTemplates = response.json;
console.log(alertTemplates);
store.loadRawData(alertTemplates,true);
},
failure: console.log('failed')
});
1 ответ
Несколько вещей, которые я заметил в магазине:
- Автозагрузка должна быть на уровне магазина, а не внутри прокси:.
- Слушатель должен быть вне прокси.
- Метод: должен быть внутри прокси:.
Кроме того, я не уверен, что такое excludeContext. Какую версию EXTJS вы используете?
Вот небольшая реорганизация, чтобы дать вам идею. Вам не нужно загружать его вручную, если autoLoad имеет значение true.
var store = Ext.create('Ext.data.TreeStore', {
model: 'alertTemplates',
autoLoad: true,
proxy:{
type: 'ajax',
url: '/alfresco/service/alertTemplates.json?alf_ticket=' + user.authTicket,
method: 'GET',
reader:{
root:'children',
type: 'json'
},
//excludeContext: true,
params: {
nodeRef: currentProject.nodeRef
}
},
scope: this,
listeners: {
load: function(){
console.log('loaded');
}
}
});