小编典典

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

angularjs

我正在编写一个与已在使用的Google Analytics(分析)API交互的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>

阅读 211

收藏
2020-07-04

共1个答案

小编典典

在JavaScript中,可以使用点符号或方括号符号来访问对象属性。点表示法通常更简洁,但有局限性。您已经注意到,您的媒体资源包含无效字符,因此无法通过点符号访问。然后,解决方案是使用括号表示法访问属性,如下所示:total['ga:newVisits']这样您的完整代码将为{{total['ga:newVisits']}}
现场演示在这里(单击)。

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

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

console.log(myObj[foo]); //logs '123'
2020-07-04