如何在不对应用程序上下文进行硬编码的情况下,从Grails应用程序中的.js文件创建指向资源(图像,.css文件等)的链接?
在.gsp文件中,我可以使用资源插件提供的r:img
或r:resource
标记轻松完成此操作。如果应用未使用此插件,则可以使用g:resource
标记。但是,这些插件都不能从.js代码中使用。
我当前的解决方案(我讨厌)是将.js代码放在.gsp文件中,然后使用上述图像标记,例如
<r:script>
var imagePath = '<r:img file="foo/bar.png"/>';
<r:script>
我的问题是如何从.js文件链接到资源,而不是从GSP中<script>
块中的某些JavaScript代码链接。在后一种情况下,我可以使用<r:img>
或<r:resource>
或<g:createLink>
等GSP代码,但忽略.js文件中的GSP代码。
答案 0 :(得分:6)
您可以将当前上下文传递给JS。例如,通过将以下代码段添加到<head>
(在您自己的JS之前):
<g:javascript>
window.appContext = '${request.contextPath}';
</g:javascript>
然后在JS的任何地方使用它:
var imagePath = appContext + '/images/foo/bar.png'
答案 1 :(得分:-1)
你非常接近:
改为使用
<r:script>
var imagePath = '${createLink(dir: 'foo', file: 'bar.png')}';
</r:script>