Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用无效字符访问对象属性_Javascript_Regex_Angularjs_Google Analytics - Fatal编程技术网

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

Javascript 如何使用无效字符访问对象属性,javascript,regex,angularjs,google-analytics,Javascript,Regex,Angularjs,Google Analytics,我正在编写一个Angular应用程序,它与已经在使用的Google Analytics API接口。谷歌返回的数据前缀为“ga:”如示例“ga:newvisions” 如果我使用表达式{total.ga:newvists},Angular将无法解析它。任何试图转义冒号以继续的尝试都会导致错误或完全转义我的表达式 如何将{{total.ga:newvisions}}传递给Angular,以便表达式正常工作? <!doctype html> <html ng-app="Anal

我正在编写一个Angular应用程序,它与已经在使用的Google Analytics API接口。谷歌返回的数据前缀为“ga:”如示例“ga:newvisions”

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

如何将{{total.ga:newvisions}}传递给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>

  • {{total.ga:newvisions}

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

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

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

括号表示法的另一个优点是,它允许您使用变量名作为属性:

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

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

{{total['ga:newvisions']}
我删除了之前的评论。你是100%正确的。谢谢你的回答,还有详细的解释@VSack好的,很高兴它成功了!我这样做是为了以防万一:堆栈溢出不仅仅是为了修复bug,更是为了学习,所以我总是试图让我的答案成为一个教学机会。谢谢你的赏识!!