2

场景:

我在具有ng-class指令的元素上使用该ng-repeat指令。如果满足某些条件,我将ng-class在我的元素上添加一个类。我遇到的问题是我的条件。由于它们来自我使用 Ruby on Rails 生成的一些 JSON,因此我的 JSON 中返回布尔值的键以问号结尾。引用时,问号在 JSON 键中完全有效,但是当我尝试使用点符号在 AngularJS 表达式中访问它们时,Chrome 中的控制台会显示错误:

失败的代码:

<tr ng-repeat="foo in bars" ng-class="{'boo': foo.bar.baz? || !foo.bar.yes? }">

错误:

Error: Lexer Error: Unexpected next character  at columns 39-39 [?] in expression
4

1 回答 1

2

因此解决方案是通过方括号访问 JSON 键值对,并引用键名。

工作代码:

<tr ng-repeat="foo in bars" ng-class="{'boo': foo.bah['baz?'] || !foo.bar['yes?'] }">

我在使用 AngularJS 1.0.5、Ruby 1.8.7、Rails 2.3.17 时发现了这个解决方案

http://www.json.org/

这里也是一个很好的讨论:

是否有任何实际理由为 JSON 键使用带引号的字符串?

于 2013-03-12T00:07:01.597 回答