javascript - 如何访问具有无效字符的对象属性

标签 javascript regex angularjs google-analytics

我正在编写一个与已在使用的 Google Analytics API 接口(interface)的 Angular 应用程序。 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>

最佳答案

在 JavaScript 中,可以通过点号或括号号来访问对象属性。点符号通常更简洁,但有限制。正如您所注意到的,您的属性包含无效字符,因此无法通过点表示法访问。然后,解决方案是使用括号表示法访问该属性,如下所示:total['ga:newVisits'] 这样您的完整代码将是 {{total['ga:newVisits' ]}}。 <强> Live demo here (click).

括号表示法的另一个不错的特性是它允许您将变量名用作属性:

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

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

关于javascript - 如何访问具有无效字符的对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21056075/

相关文章:

regex - 如何使用正则表达式将下划线转换为驼峰式大小写?

Java 链接正则表达式

angularjs - 使用抽象状态的目的是什么?

mysql - 使用 MySQL 数据库构建 Angular 登录系统

javascript - 单击时无法清除 Angular 中的输入字段

javascript - 在 javascript 中创建玩具数组

javascript - JsGrid 排序不适用于自定义列

javascript - HTML 标签上的非标准属性。好东西?坏事?你的意见?

regex - 为什么我的非贪婪匹配在 vim 中不起作用?

javascript - 为什么 window.scrollTo() 没有被调用?