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');
        }
    }
});
Другие вопросы по тегам