如何使用无效字符访问对象属性

时间:2014-01-10 23:02:25

标签: javascript regex angularjs google-analytics

我正在编写一个Angular应用程序,该应用程序与正在使用的Google AnalyticsAPI进行交互。 Google返回的数据前缀为“ga:”,如示例“ga:newVisits”。

如果我使用表达式{{total.ga:newVisits}},Angular无法解析它。任何逃避冒号继续的尝试都会导致错误或完全逃避我的表达。

如何将{{total.ga:newVisits}}传递给Angular,以便表达式正常工作?

<!doctype html>
  <html ng-app="AnalyticsApp">
    <head>
      <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular.min.js"></script>
      <script src="angular-controller.js"></script>
    </head>
    <body ng-controller="AnalyticsCtrl">
      <ul>
        <li ng-repeat="total in result">
          {{total.ga:newVisits}}
        </li>
      </ul>
    </body>
  </html>

2 个答案:

答案 0 :(得分:9)

在JavaScript中,可以通过点表示法或括号表示法访问对象属性。点符号通常更清晰,但有限制。如您所知,您的属性包含无效字符,因此无法通过点表示法访问。然后,解决方案是使用括号表示法访问该属性,如下所示:total['ga:newVisits'],以便您的完整代码为{{total['ga:newVisits']}}。的 Live demo here (click).

支架表示法的另一个不错的功能是它允许您使用变量名作为属性:

var myObj {
  bar: '123'
};
var foo = 'bar';

console.log(myObj[foo]); //logs '123'

答案 1 :(得分:2)

您需要像关联数组一样访问它:

{{total['ga:newVisits']}}