在Extjs中使用点表示法解析变量

时间:2012-03-02 14:00:22

标签: json extjs extjs4

当我从json解析这些值时,Extjs中的值在网格中变为null,这主要是因为属性标签带有点。

"properties": {
            "financialYear": "2009",
            "employee.employeeId": "12345",
            "employee.employeeName": "abc"
        }

如何让.js中的employee.employeeId值显示在Extjs网格中。

现在我在.js,

中这样映射
Ext.define('DocProperties',{
extend: 'Ext.data.Model',
fields: [
    {name: 'financialYear', type: 'string'},
    {name:'employeeId', mapping:'properties.employee.employeeId',type: 'string'},
]});

并且在网格面板中显示我正在这样访问,

{
        width:100,
        header: "Employee ID",
        dataIndex: 'employeeId',
        sortable: true
    } 

任何解决方案或解决方法。


@DmitryB谢谢,但这并没有解决我的问题,我有这样的商店

Ext.onReady(function() {

var store = Ext.create('Ext.data.Store', {
    model: 'DocResult',
    autoLoad: true,
    proxy: {
        type: 'rest',
        url : 'sample-data.json',
        reader: {
            type: 'json',
            root: 'results',
            useSimpleAccessors: true
        }
    }
});

在我的模型中我定义了这个

Ext.define('DocResult',{
extend: 'Ext.data.Model',
fields: [
    {name: 'id', type: 'int'},
    {name:'employeeId', mapping:'properties.employee.employeeId',type: 'string'}

] });

然后在我的Ext网格中显示空值。请帮助。

2 个答案:

答案 0 :(得分:2)

只需查看源代码,您可以尝试以下方法:

mapping:'properties["employee.employeeId"]'

将此useSimpleAccessors设置为truefalse,然后让我知道结果是什么。

答案 1 :(得分:1)

尝试将useSimpleAccessors选项设置为true。它默认是假的。

http://docs.sencha.com/ext-js/4-0/#!/api/Ext.data.reader.Json-cfg-useSimpleAccessors

编辑:同样基于您在不同答案中提供的商店定义,JSON阅读器配置需要更改为root: "properties"

除非您没有提供完整的JSON示例,并且属性包含在“results”对象中,否则您需要设置root:“results”和记录:“properties”