ExtJS 4 Beta 3模型获胜;t从JSON文件加载数据

ExtJS 4 Beta 3 Model Won't Load Data From JSON File

本文关键字:JSON 文件 加载 数据 Beta 模型 获胜 ExtJS      更新时间:2023-09-26

型号:

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对象,则不会发生任何事情。

是不是有什么事情我遗漏了/做得不对?

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

height: 300

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

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,没有网络请求