Модель ExtJS 4 Beta 3 не загружает данные из файла JSON - PullRequest
1 голос
/ 17 апреля 2011

Модель:

Ext.ns('Workout.Models.user');
Ext.regModel('User', {
    fields: [{
        name: 'member_id',
        type: 'int'
    }, {
        name: 'first_name',
        type: 'string'
    }, {
        name: 'last_name',
        type: 'string'
    }, {
        name: 'username',
        type: 'string'
    }, {
        name: 'password',
        type: 'string'
    }, {
        name: 'dob',
        type: 'date',
        dateFormat: 'Y-m-d'
    }, {
        name: 'email_address',
        type: 'string'
    }, {
        name: 'is_active',
        type: 'int'
    }],
    proxy: {
        type: 'ajax',
        format: 'json',
        url: '../../_dev/json_fixtures/users.json',
        reader: {
            type: 'json',
            root: 'users'
        },
        root: 'users'
    }
});

Магазин:

Ext.ns('Workout.Stores');
Workout.Stores.user = new Ext.data.Store({
    model: 'User',
    storeId : 'Workout.Stores.user',
    sorters: [
        'last_name',
        'first_name',
        'member_id'
    ],
    autoLoad: true
});

Сетка:

Ext.ns('Workout.User');
Workout.User.grid = new Ext.grid.Panel({
    store: 'Workout.Stores.user',
    columns:[{
        text: 'Created At',
        dataIndex: 'created_at'
    }, {
        text: 'First Name',
        dataIndex: 'first_name'
    }]
});

Файл JSON

{
    "users":[{
        "created_at":"2011-04-01 14:13:34",
        "member_id":"14453",
        "first_name":"Jemima",
        "last_name":"Petersen",
        "username":"jpeterson",
        "password":"TDW29HOH7WY",
        "dob":"1960-07-03",
        "email_address":"at.velit.Pellentesque@sociis.com"
    }]
}

Когда я загружаю свою HTML-страницу, сетка пуста. Однако, если я передаю необработанные данные в хранилище через параметр data, он загружается. Если я вызываю User.load() вручную через консоль, ничего не происходит. Если я вызову User.load() и передам допустимый объект JSON, ничего не произойдет.

Что-то я упускаю / не делаю правильно?

Ответы [ 2 ]

2 голосов
/ 17 апреля 2011

Вы сделали все, что ожидали, установили высоту вашей панели сетки.Вам необходимо установить высоту для отображения записей.Вот что я хотел бы добавить к вашей конфигурации панели сетки:

height: 300

Теперь, кроме этого, у вас есть другие проблемы, которые вы не определили created_at в своей модели User.Если вы планируете отображать значение в вашей сетке, вам также необходимо обновить модель.

0 голосов
/ 22 апреля 2011
Ext.define(
'BK.store.Categories'
,   {       extend      :   'Ext.data.Store'
        ,   model       :   'BK.model.Category' 
        ,   autoload    :   true
        ,   proxy       :   {       type    :   'ajax'
                                ,   format  :   'json'
                                ,   root    :   'results'
                                ,   api     :   {   read    :   'data/data1.json'   }

                                ,   reader  :   new Ext.data.JsonReader({       type            :   'json'
                                                    ,   root            :   'results'
                                                    ,   successProperty :   'success'
                                                    })
                            }
    }

);

когда я использую данные, жестко закодированные в хранилище, все работает нормально (поэтому модель, представление, контроллер в порядке), как только я использую прокси, он ведет себя так, как если бы автозагрузка была FALSE, нет сетевого запроса

...