Передать функцию Go в ответ html / js на кнопку "onclick" - PullRequest
0 голосов
/ 08 сентября 2018

Я использую пакет Go "net / http" для передачи данных между html и серверной частью в Go. Например, мы можем использовать местоположение изображения следующим образом:

<img src={{.MyPicture}} width=200 height=auto/>

Мы можем сделать то же самое, чтобы передать функции в html и вызвать их:

{{if .MyBool}}
    {{.MyFunction}}
{{end}}

Теперь мой вопрос : как мне установить ответ кнопки для вызова моей функции? Я ожидаю, что это сработает, но это не так:

<button onclick={{.ShowMoreLinks}}>Show more!</button>

Я получаю "[js] Заявление или ожидание." Я попытался обернуть его в скрипт (как встроенный, так и в заголовок), но ни один из них, кажется, не работает. JS не может обработать переданную переменную.

1 Ответ

0 голосов
/ 08 сентября 2018

На самом деле, вы используете механизм шаблонов Go для подготовки HTML, который вы отправляете в браузер. Это только заполняет заполнители и в конечном итоге создает только строку (в данном случае HTML), которая будет отправлена ​​по сети в браузер для интерпретации. Это браузер, который может взаимодействовать с пользователем только через такие события, как «onclick». Кроме того, эти события должны быть кодом Javascript, таким как выражение JS или вызов функции:

onclick="jsFunction()"

Вы можете сделать так, чтобы ваш шаблон Go предоставлял функцию для вызова в качестве заполнителя:

onclick="{{.JSFuncCall}}"

Здесь ".JSFuncCall" должен был бы оценить какое-то имя JS-функции (и скобки для вызова), которое вы должны были определить в своем клиентском коде JS. Эта функция Javascript могла бы затем выполнить XHR-вызов к серверу по какому-то конкретному URL, который запускает обработчик Go, запускает код Go, который вы хотите запустить, и затем возвращает ответ, который затем можно обработать обратно в функции JS.

...