Lexer错误:意外的下一个字符(属性名称中的tilda~)

时间:2015-12-02 14:47:16

标签: javascript angularjs

如何解析或获取字段值,字段名称中有特殊字符?我收到了以下错误:

  

Lexer错误:第28-28行[〜]中出现意外的下一个字符   表达式[report.VALUE_MAP.LOGIN_DATA~LOGIN_DATE]

我想获得

的价值
<td>{{report.VALUE_MAP.LOGIN_DATA~LOGIN_DATE}}</td>

1 个答案:

答案 0 :(得分:2)

我发现此处描述的类似问题https://github.com/angular/angular.js/issues/7469

尝试此解决方法:

 <td>{{report.VALUE_MAP['LOGIN_DATA~LOGIN_DATE']}}</td>

我认为LOGIN_DATA~LOGIN_DATE是有问题的属性名称

幕后发生了什么

AngularJS的$ parse服务将尝试评估表达式report.VALUE_MAP.LOGIN_DATA~LOGIN_DATE。它将尝试遍历范围和嵌套对象以获取最后一个属性并检索它的值。但tilde ~在javascript中有特殊含义。 (在此处阅读http://www.joezimjs.com/javascript/great-mystery-of-the-tilde/)因此,代字号~会混淆解析器。最好在属性名称中避免使用它。

如果您无法控制属性名称,并且您必须使用属性名称中的tilda,那么您必须使用此语法object['propertyname']

使用示例http://plnkr.co/edit/8WKRLktv2tuePqAFvkDY

查看此plunker