1

我正在创建一个 Ext.data.JsonStore 来显示图表。它在 C# 代码中构建的数据存储并通过以下方式插入到页面中:

Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "Data", dataScript, true);

这是生成的 javascript 代码:

var store = Ext.create('Ext.data.JsonStore', {
   fields: ["name", "ASAP", "Phase 2", "test", "Version 2.0 SR 1"],

   data: [
{ "name": "ASAP", "ASAP": 30, "Phase 2": 10, "test": 5, "Version 2.0 SR 1": 10 } ,
{ "name": "Phase 2", "ASAP": 12, "Phase 2": 5,  "test": 15, "Version 2.0 SR 1": 5 }   
   ]
}); 

问题是在“Version 2.0 SR 1”字段中有一个“。” 这导致脚本错误。

它返回的错误是:

SCRIPT1004: Expected ';' 
ext-all.js, line 18 character 5081

我假设我需要以某种方式进行编码,但是我尝试将字段修改为无济于事:

Version 2\\.0 SR 1
Version 2\.0 SR 1
Version 2\u002E0 SR 1

如果我删除“。” 或将其替换为“_”代码有效。

4

1 回答 1

0

Ext.data.JsonStore 类自动使用代理/读取器配置来配置自己,如下所示:

proxy: {
    type  : 'ajax',
    reader: 'json',
    writer: 'json'
}

但是,这对于您所描述的情况还不够,因为您需要在 JSON 阅读器上启用useSimpleAccessors 配置。那么,解决方案是使用常规的 Ext.data.Store 代替,并明确指定代理和读取器:

var store = Ext.create('Ext.data.Store', {
    proxy: {
        type: 'memory',
        reader: {
            type: 'json',
            useSimpleAccessors: true
        }
    },

    fields: ["name", "ASAP", "Phase 2", "test", "Version 2.0 SR 1"],

    data: [
        { "name": "ASAP", "ASAP": 30, "Phase 2": 10, "test": 5, "Version 2.0 SR 1": 10 } ,
        { "name": "Phase 2", "ASAP": 12, "Phase 2": 5,  "test": 15, "Version 2.0 SR 1": 5 }   
    ]
});
于 2012-08-03T14:24:41.817 回答