ng单击错误:[$parse:syntax]语法错误:令牌'对象'意外,应为[]

ng-click Error: [$parse:syntax] Syntax Error: Token 'Object' is unexpected, expecting []]

本文关键字:错误 对象 意外 应为 单击 parse ng 语法 令牌 syntax      更新时间:2024-01-08

当用户点击谷歌地图上的一个点时,我进行反向地理编码,如下所示:

geocoder.geocode({'location': latlng}, function(results, status) {
            if (status === google.maps.GeocoderStatus.OK) {
                if (results[1]) {
                console.log(results[1]);

在这个阶段,结果[1]的控制台日志看起来像

Object {address_components: Array[4], formatted_address: "Rathmines, Co. Dublin, Ireland", geometry: Object, place_id: "ChIJN6MDC6kOZ0gRIhArCabX9o4", types: Array[2]}

但当用户点击带有我弹出的地址的信息窗口时,我会尝试将该对象传递给ng点击函数,如下所示:

ng-click='addressPicked("+results[1]+")'

我得到错误

Error: [$parse:syntax] Syntax Error: Token 'Object' is unexpected, expecting []] 
at column 23 of the expression [addressPicked([object Object])] starting at [Object])].

我在另一个应用程序中有这个工作,但我只是通过了一个lat&长字符串。

在尝试将对象作为参数传递之前,是否需要将其转换为其他对象?

有人在点击之前遇到过这个错误吗?

任何帮助都将不胜感激,谢谢。

如果不看完整的代码,我猜你会得到错误,因为

ng-click='addressPicked("+results[1]+")'

正在将CCD_ 1转换为其字符串表示CCD_。

尝试使用不带内引号的

ng-click='addressPicked(results[1])'

您应该这样做:

ng-click='addressPicked('+results[1]+')'

因为结果是一个变量(对象),所以传递时必须不带引号。

对于试图将对象传递到下一个函数的人来说,上述答案都不起作用。在这种情况下,您需要使用:

ng-click='addressPicked(' + JSON.stringify(object) + ')'

<div class="class1" id="id1" data-ng-click="click1(arg)" data-ng-class="{class2: expression, class3: expression, class4: expression }"> 

当我的表达式如上所述时,我也遇到了类似的错误,当我更改了下面的表达式时,问题得到了解决。在ng类的所有类中添加单引号(")。

<div class="class1" id="id1" data-ng-click="click1(arg)" data-ng-class="{ 'class2': expression, 'class3': expression, 'class4': expression }">