ng-click错误:[$ parse:syntax]语法错误:令牌'对象'是意外的,期待[]]

时间:2016-04-05 21:05:18

标签: javascript angularjs google-maps geocoding angularjs-ng-click

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

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-click函数,如下所示:

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之前都会遇到此错误?

非常感谢任何帮助,谢谢。

4 个答案:

答案 0 :(得分:7)

如果不查看完整代码,我的猜测就是你得到了错误,因为

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

正在将results[1]转换为字符串表示形式[object Object],因此错误。

尝试不使用内部引号

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

答案 1 :(得分:2)

你应该这样做:

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

因为结果是变量(对象)必须在没有引号的情况下传递。

答案 2 :(得分:0)

对于试图将对象传递给下一个函数的人来说,上述答案都没有完全正常。在这种情况下,您需要使用:

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

答案 3 :(得分:0)

public function toArray()
{
    return array_map(function ($value) {
        return $value instanceof Arrayable ? $value->toArray() : $value;
    }, $this->items);
}

当我的表情如上所述,当我改变表达式时,我得到了类似的错误,问题得到了解决。在ng-class的所有类中添加单引号('')。

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