2015-01-16 3 views
2

С Grails ресурсов плагин вы можете использовать GSP макет так:Поместите JavaScript в Дно с Grails Asset-Pipeline

<!DOCTYPE html> 
<html> 
<head> 
    <g:layoutHead/> 
    <r:layoutResources /> 
</head> 
<body> 
    <g:layoutBody/> 


    <g:javascript library="jquery" plugin="jquery" /> 

    <r:layoutResources /> 

</body> 

Использование r:layoutResources тега вы можете указать, что ресурсы должны быть включены в нижней части страницу после JQuery, которая находится в нижней части макета gsp.

Есть ли способ сделать то же самое с плагином для конвейера активов? Как разместить ресурсы в нижней части документа после включения JQuery?

ответ

1

Я просто добавить строки в нижней части моих .gsp или компоновочных файлов:

<asset:stylesheet src="xxx.css"/> 
<asset:javascript src="xxx.js"/> 

xxx.js и xxx.css может включать в манифест, чтобы загрузить больше вещей.

Вы бы загрузить JQuery с помощью манифеста (ы):

xxx.js:

//= require jquery 
//= require select2.min.js 
//= require_self 
+0

Это не будет работать, если вы добавите его не в файл макета, поскольку JQuery в макете будет включен после xxx.js. – confile

+0

Это работает для меня. Я включаю материал JQuery в манифест вызова 'application.js', который указан в' ' моего макета .gsp. Я также думаю, что вы можете добавить JQuery в манифест xxx. – sebnukem

+0

Мне не нравится это решение. – confile

0

Вы не можете решить эту проблему с <g:pageProperty/> тега, независимо от того, какие плагины вы используете (во всяком случае, я тестировал решение с транспортным средством, как и вы).

обучающая с решением здесь: http://mythinkpond.com/2014/02/02/grails-adding-javascript-bottom-page/

4

В файле макета, поставить это:

<html> 
<body> 
.... 
<!-- Your layout scripts --> 
<asset:javascript src="app.js"/> 

<!-- Custom placeholder for page scripts --> 
<g:ifPageProperty name="page.footScripts"> 
    <g:pageProperty name="page.footScripts" /> 
</g:ifPageProperty> 

</body> 
</html> 

И на вашей странице (т.е. index.gsp), поместите этот

<html> 
<body> 
... 
... 
</body> 
</html> 

<content tag="footScripts"> 
    <asset:javascript src="jqueryui/jquery-ui.min"/> 
</content> 

Таким образом, вы можете расширить свои макеты с содержанием, определенным на ваших отдельных страницах.

Grails 3 documentation (though the same in Grails 2)

Смотри главу 8.2.6 SiteMesh содержательных блоков

0

Если вы хотите добавить несколько сценариев на своих дочерних сценариев, вы можете сделать это, как

Низ ваш parent.gsp

<g:each in="${pageScript}"> 
    <asset:javascript src="${it.value}.js"/> 
</g:each> 

child.gsp

<g:set var="pageScript" value="['script1, script2']"/>