Grails 从.js文件创建指向资源的链接

Grails 从.js文件创建指向资源的链接,grails,groovy,Grails,Groovy,如何从Grails应用程序中的.js文件创建指向资源(图像、.css文件等)的链接,而无需硬编码应用程序上下文 在.gsp文件中,我可以使用resources插件提供的r:img或r:resource标记轻松完成这项工作。如果应用程序未使用此插件,则可以使用g:resource标记。但是,这两个插件都不能从.js代码中使用 我目前的解决方案(我讨厌)是将.js代码放在一个.gsp文件中,然后使用前面提到的图像标记,例如 <r:script> var imagePath = '&l

如何从Grails应用程序中的.js文件创建指向资源(图像、.css文件等)的链接,而无需硬编码应用程序上下文

在.gsp文件中,我可以使用resources插件提供的
r:img
r:resource
标记轻松完成这项工作。如果应用程序未使用此插件,则可以使用
g:resource
标记。但是,这两个插件都不能从.js代码中使用

我目前的解决方案(我讨厌)是将.js代码放在一个.gsp文件中,然后使用前面提到的图像标记,例如

<r:script>
  var imagePath = '<r:img file="foo/bar.png"/>';
<r:script>

var-imagePath='';
更新
我的问题是如何从.js文件链接到资源,而不是从GSP中
块中的某些JavaScript代码。在后一种情况下,我可以使用GSP标记,如
,但是.js文件中的GSP标记被忽略。

您可以将当前上下文传递给js。例如,将以下代码段添加到
(在您自己的JS之前):

你是如此的接近:

改用

<r:script>
   var imagePath = '${createLink(dir: 'foo', file: 'bar.png')}';
</r:script>

var imagePath='${createLink(dir:'foo',file:'bar.png')}';
var imagePath = appContext + '/images/foo/bar.png'
<r:script>
   var imagePath = '${createLink(dir: 'foo', file: 'bar.png')}';
</r:script>