【问题标题】:ExtJS 4 - Field in Model and DataStore.Raw but not in DataStore.DataExtJS 4 - 模型和 DataStore.Raw 中的字段,但 DataStore.Data 中没有
【发布时间】:2011-09-14 19:05:51
【问题描述】:

我正在尝试使用使用代理和定义的模型和读取器的数据存储来填充网格。类似的商店没有同样的问题,但有一个。

型号

Ext.define('DrillDescriptionGridModel', {
    extend: 'Ext.data.Model',
    fields: [
        {name: 'sentTime',        type: 'string'},
        {name: 'sDescription',    type: 'string'},
        {name: 'receivedTime',    type: 'string'},
        {name: 'seconds',        type: 'number'},
        {name: 'formatted',        type: 'string'},
        {name: 'alertPhone',    type: 'string'},
        {name: 'alertEmail',    type: 'string'}
    ]
});

读者

var DrillDescriptionReader = Ext.create('Ext.data.JsonReader', {
    type:    'json',
    model:    'DrillDescriptionGridModel',
    root:    'data'
});

商店

DrillDescriptionStore = Ext.create('Ext.data.Store', {
    model: 'DrillDescriptionGridModel',
    autoLoad: false,
    proxy: {
        type:             'ajax',
        url:            '/inc/ajax/Monitors.php',
        actionMethods:    'POST',
        reader:            DrillDescriptionReader
    },
    listeners: {
        load: function() {
            console.log(this.getAt(0));
            DrillDescriptionPanel.show();
        }
    }
});

代理返回一个json字符串

{"data":[{"sDescription":"Status Normal","sentTime":"12:00:00 am","receivedTime":"12:00:01 am","seconds":"2","formatted":"2 seconds","alertPhone":"","alertEmail":""}, [...]

负载监听器中的console.log显示

Ext.Class.c.m
  data: Object
    alertEmail: ""
    alertPhone: ""
    formatted: "2 seconds"
    receivedTime: "12:00:01 am"
    seconds: 2
    sentTime: "12:00:00 am"
    __proto__: Object
  [...]
  raw: Object
    alertEmail: ""
    alertPhone: ""
    formatted: "2 seconds"
    receivedTime: "12:00:01 am"
    sDescription: "Status Normal"
    seconds: 2
    sentTime: "12:00:00 am"
    __proto__: Object
[...]

任何人都知道为什么 sDescription 字段会映射到原始对象中,而不是数据对象中,或者发现代码中的错误?任何帮助将不胜感激。谢谢。

【问题讨论】:

  • 我已经在 Linux 上的 Chromium 中使用 Ext 4.0.2a 测试了您的代码,并且也可以在数据对象中看到 sDescription。您使用的是哪个版本的 ExtJS?
  • 我用的是 4.0.2(不是 a),在 Mac 上用 Chrome 和 FF6.0.2 测试,在 Windows 环境下用 IE8 测试,结果相同。
  • 您的代码在 4.0.2 中也可以按预期工作 - 在 Linux 和 Windows 上的 Chromium 中。现在我不知道是什么导致了你的问题。

标签: extjs extjs4


【解决方案1】:

如果您在标记时使用 extjs 4 .. 那么 json 阅读器未正确定义 班级应该是Ext.data.reader.Json

【讨论】:

  • 感谢您查看,但是,这并没有改变任何事情。
  • Ext.data.reader.Json 有一个备用类名。它是 Ext.data.JsonReader。这应该不是问题。
【解决方案2】:

所以我想出了这个,不幸的是它与我发布的代码无关。感谢洛基的所有帮助。

我在代码的下方有另一家商店,它试图使用同一个阅读器……这似乎根本不应该是一个问题,但显然是。修改了下面商店中的阅读器,代码立即生效。

再次感谢 Rocky 的帮助,感谢您查看 nscrob。

【讨论】:

    猜你喜欢
    • 2012-04-07
    • 2012-05-17
    • 2011-08-28
    • 1970-01-01
    • 2021-12-27
    • 2011-10-01
    • 2022-01-12
    • 2013-10-02
    • 1970-01-01
    相关资源
    最近更新 更多