场景:
我在具有 ng-repeat
指令的元素上使用 ng-class
指令。
我将 ng-class 放在我的元素上,以便在满足某些条件时向我的元素添加一个类。
我遇到的问题是我的条件。因为它们来自一些 JSON
我是用 Ruby on Rails 生成的,JSON 中返回 bool 值的键以
问号。当引用时,问号在 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
最佳答案
因此解决方案是通过方括号访问 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 时发现了这个解决方案
这里也有一个很好的讨论:
Is there any practical reason to use quoted strings for JSON keys?
关于ruby-on-rails - 如何在 AngularJS 表达式中访问由 Rails 生成的 JSON 对象的 bool 属性值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15350973/