В ExtJS Grid не отображаются остальные данные - PullRequest
0 голосов
/ 06 мая 2018

Я создал мини-приложение EXTJS, определил модель, магазин и сетку. Я убедился, что магазин работает, потому что я могу использовать инструменты отладки Chrome для создания экземпляра и просмотра данных. Однако, когда я пытаюсь отобразить данные в сетке, они никогда не отображаются.

Вот код для app.js:

Ext.application({
launch: function () {
    Ext.define('Companies', {
        extend: 'Ext.data.Model',
        fields: ['id', 'link', 'name']
    });

    Ext.define('CompaniesStore', {
        extend: 'Ext.data.Store',
        model: 'Companies',
        storeId: 'cStore',
        autoLoad: true,
        proxy: {
            type: 'rest',
            url: 'http://corky52547.somee.com/Service1.svc/Companies'
        }
    });

    Ext.create('Ext.container.Viewport', {
        name : "viewPort2",
        layout: 'fit',
        renderTo: Ext.getBody(),
        items: [
            {
                title: 'Bill Reminder Web'
            },
            {
                xtype: 'grid',
                title: 'Bills',
                height: 100,
                width: 100,
                columns: [
                    {text: 'ID', width: 100, dataIndex: 'id'},
                    {text: 'Link', flex: 1, dataIndex: 'link'},
                    {text: 'Name', width: 200, dataIndex: 'name'}
                ],
                store: Ext.create('CompaniesStore',{})
            }
        ]
    });
}
});

Обновление:

Теперь я могу отображать данные, но без темы. Как мне обновить тему?

enter image description here

1 Ответ

0 голосов
/ 06 мая 2018

CORS (Cross Origin запросы) блокирует запрос к домену. Подгонка макета также вызывает некоторые проблемы.

Чтобы заставить CORS работать, вам нужно добавить

Access-Control-Allow-Origin: *

В противном случае вы можете использовать промежуточный прокси-сервер, например cors -where

Незначительные ошибки, такие как имена полей, должны соответствовать точному регистру, в котором они доступны в ответе.

Вот рабочий код POC:

Ext.application({
    name: "Application",
    launch: function () {
        Ext.define('Companies', {
            extend: 'Ext.data.Model',
            fields: ['ID', 'Link', 'Name']
        });

        Ext.define('CompaniesStore', {
            extend: 'Ext.data.Store',
            model: 'Companies',
            storeId: 'cStore',
            autoLoad: true,
            proxy: {
                type: 'rest',
                url: 'https://cors-anywhere.herokuapp.com/http://corky52547.somee.com/Service1.svc/Companies'
            }
        });

        Ext.create('Ext.container.Viewport', {
            name: "viewPort2",
            renderTo: Ext.getBody(),
            items: [{
                title: 'Bill Reminder Web'
            }, {
                xtype: 'grid',
                title: 'Bills',
                flex: 1,
                columns: [{
                    text: 'ID',
                    width: 100,
                    dataIndex: 'ID'
                }, {
                    text: 'Link',
                    flex: 1,
                    dataIndex: 'Link'
                }, {
                    text: 'Name',
                    width: 200,
                    dataIndex: 'Name'
                }],
                store: Ext.create('CompaniesStore', {})
            }]
        });
    }
});

Вот рабочая скрипка: https://fiddle.sencha.com/#view/editor&fiddle/2gbc

...