我正在创建一个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 }
]
});
问题是在“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
如果我删除'。'或者用'_'替换代码。
答案 0 :(得分:0)
Ext.data.JsonStore类使用这样的代理/阅读器配置自动配置自己:
proxy: {
type : 'ajax',
reader: 'json',
writer: 'json'
}
但是,对于您所描述的情况,这还不够,因为您需要在JSON阅读器上启用useSimpleAccessors config。那么,解决方案是使用常规的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 }
]
});