ExtJS 4 Beta 3模型不会从JSON文件加载数据

时间:2011-04-17 06:42:25

标签: javascript extjs extjs4

模特:

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 个答案:

答案 0 :(得分:2)

您已完成所有设置网格面板高度的操作。您需要设置高度以显示记录。以下是我将添加到网格面板配置中的内容:

height: 300

现在,除此之外,您还有其他问题,例如您未在用户模型中定义created_at。如果您计划在网格中显示值,则还需要更新模型。

答案 1 :(得分:0)

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'
                                                    })
                            }
    }

);

当我在商店中使用硬编码的数据时,它工作正常(因此模型,视图,控制器都可以),一旦我使用代理,它的行为就像自动加载是假的,没有网络请求