Extjs4中Model的字段不能包含点、破折号等特殊字符

2w3rbyxf  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(163)

我必须维护一个由extjs4.2开发的遗留项目。但是我发现网格不能使用带有动态字段的存储。并且该字段包含字符破折号和减号,这会导致错误。请看下面的代码片段,并关注网格存储的字段。它会抛出语法错误“赋值中的左手无效”。

Ext.create('Ext.grid.Panel',{
       title:'mygrid',
       store: Ext.create('Ext.data.Store'{
         fields:['group','alfa=-2.0','alfa=0','alf=2.0'],
         data:[
            {'group':'beta', 'alfa=-2.0':1.3, 'alfa=0':1.4, 'alfa=2.0':1.5 },
            {'group':'beta', 'alfa=-2.0':1.3, 'alfa=0':1.4, 'alfa=2.0':1.5 },
         ]
       }),

     columns:[
        {'dataIndex':'group','header':'group'},
        {'dataIndex':'alfa=-2.0','header':'alfa=-2.0'},
        {'dataIndex':'alfa=0','header':'alfa=0'},
        {'dataIndex':'alfa=2.0','header':'alfa=2.0'}
     ]
    });
iq0todco

iq0todco1#

您的范例包含语法错误。Ext.create('Ext.data.Store'{在第一个参数之后遗漏了,
在后台,Ext调用recordDataExtractorTemplate,试图访问带有点标记的记录值。这将导致代码value = source.alfa=-2 && source.alfa=-2.0;,这显然是语法错误的。
下面的任何一种解决方案都可能奏效。你选择哪一种取决于你。

  • 如果这些字段在应用程序中没有广泛使用,则这是更改代码中的字段名称的最快解决方案(如果可能)。
  • 您可以检查更高版本的Ext是否修复了此问题。然而,迁移可能是一件痛苦的事情。
  • 您可以建立Ext.data.reader.Reader的覆写,并修补失败的函式。

相关问题