2015-03-13 52 views
1

我使用佈局main.gsp呈現我的視圖。使用資產管道插件在Grails中加載特定的JavaScript

main.gsp我指定我用JavaScript的manifest文件:

<asset:javascript src="application.js"/> 

在我asset-pipeline清單文件我有大約20個的腳本。有些用於某些觀點,有些則沒有。但是當頁面被加載時,所有的腳本都被加載。

我非常喜歡資產管道。它保持乾淨和易於管理。

但我不知道是否可以更改配置,只需要加載視圖所需的腳本。也許根據頁面標題或<meta>標籤?

+0

您可以創建多個清單,但資產管道沒有任何配置選項來說「只有這些在這個頁面上,並且只有那些在那個頁面上」等等。 – 2015-03-13 15:57:44

回答

1

正如我在我的評論中指出的那樣,資產管道沒有任何配置來處理這個問題,但如果您的要求足夠簡單,您可以輕鬆完成此任務。

例如,如果您的要求是「某些控制器及其視圖將具有特定清單,而其他控制器將默認爲主清單」。你可以做這樣的事情在你的佈局:以上

<g:set var="specificAssetExists" val="${false}" /> 
<g:set var="specificAsset" val="${params.controller}_${params?.action ?: 'index'}.js" /> 
<asset:assetPathExists src="js/${specificAsset}"> 
    <g:set var="specificAssetExists" val="${true}" /> 
</asset:assetPathExists> 

<g:if test="${specificAssetExists}"> 
    <asset:javascript src="${specificAsset}"/> 
</g:if> 
<g:else> 
    <asset:javascript src="application.js"/> 
</g:else> 

假設將被命名爲與controllerName_actionName.js控制器/行動的具體清單文件。如果不同,您也可以調整上述代碼以適應您的需求。

+0

謝謝。我會用不同的清單文件去。 – zed 2015-03-16 14:14:42

+1

絕妙的主意,約書亞。豎起大拇指!! – 2016-04-17 12:00:03

+0

文件夾前綴不是必需的'應該是''' – Omnipresent 2016-10-11 16:44:45