Использование объявленной переменной макета gsp в файле javaScript, который загружается на той же странице

Я недавно начал изучать грамилы, и я пытаюсь использовать переменную gsp, объявленную в макете страницы как:

<g:set var="abtestType" value="newSearchBar" />

в файле JS, который загружается на той же странице. Вещи, которые я пробовал:

 alert(${abtestType});  
 alert(<%=abtestType%>);
 alert("abtestType:"+abtestType);

но его ошибка показа как переменная не определена. Возможно, я пытаюсь получить это неправильно, нужна помощь по этому поводу.

1 ответ

Решение

Even thinking about doing so neither makes sense nor applicable.

Причина такого утверждения заключается в том, что когда страница gsp отображается на странице html, она заменяет теги grails соответствующими тегами или значением html. Точно так же он заменяет ${} или же <%%> с HTML или Javascript или что-то, что идет на фронт-энде.

Следовательно, код, который вы пробовали, мог бы работать нормально, если бы у вас были эти строки кода javascript в самом gsp, но, как вы называли externalized js-файл, он на самом деле ничего не знает о gsp или jsp или о поддержке интерфейса любого другого языка.,

Один из способов сделать это, используя global variable в JavaScript например

объявите abtestType выше, как показано ниже:

<script>
var abtestType = "${abtestType}"
</script>

Теперь у вас есть доступ к глобальной переменной abtestType в вашем JavaScript.

Используйте его в своем javascript, но помните, что теперь вам нужно иметь эту переменную, если код, использующий ее, называется иначе, та же самая ошибка, которую вы получите, т.е. variable is not defined

Есть другой способ, который я нашел в этом посте, но на самом деле это манипуляция.

Есть ли в Javascript аналог переменной __FILE__ в PHP?

Кроме того, еще одна хорошая ссылка

Передайте переменные в JavaScript через атрибут SRC

Надеюсь, поможет!

Другие вопросы по тегам