Ошибка ng-click: [$parse:syntax] Синтаксическая ошибка: Токен «Объект» неожидан, ожидается []]

Я выполняю обратное геокодирование, когда пользователь нажимает точку на карте 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 & long.

Нужно ли мне преобразовать объект во что-то еще, прежде чем пытаться передать его в качестве параметра?

Кто-нибудь сталкивался с этой ошибкой раньше с ng-click?

Любая помощь будет высоко оценена, спасибо.


person user1180888    schedule 05.04.2016    source источник
comment
если переменная results в области видимости, попробуйте ng-click='addressPicked(results[1])'   -  person Pankaj Parkar    schedule 06.04.2016


Ответы (4)


Не глядя на полный код, я предполагаю, что вы получаете ошибку, потому что

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

преобразует results[1] в строковое представление [object Object] и, следовательно, ошибку.

Попробуйте использовать без внутренних кавычек

ng-click='addressPicked(results[1])'
person Bhabishya Kumar    schedule 05.04.2016

Вы должны сделать это:

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

Поскольку результат является переменной (объектом), его необходимо передавать без кавычек.

person Michael Rodrigues    schedule 05.04.2016

Для людей, пытающихся передать object следующей функции, ни один из приведенных выше ответов точно не работает. В этом случае вам нужно использовать:

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

person Jonathan Brou    schedule 26.09.2016

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

Я получал аналогичную ошибку, когда мое выражение было таким, как указано выше, и когда я изменил выражение, как показано ниже, проблема была решена. Добавление одинарных кавычек ('') во все классы для ng-class.

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