我正在编写一个与已在使用的 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/