1

我在“ApplicationResources”中添加了新的 Javascript 库:

jquerymobile{
    resource url:'css/jquery.mobile-1.3.2.css'
    resource url:'js/jquery.mobile/jquery.js'
    resource url:'js/jquery.mobile/jquery.mobile-1.3.2.js'
}

比我在 main.gsp 中使用这个库:

    <g:javascript library="jquerymobile"/>

    <g:layoutHead/>
    <r:layoutResources />
</head>
<body>      
    <g:layoutBody/>     
    <div id="spinner" class="spinner" style="display:none;"><g:message code="spinner.alt" default="Loading&hellip;"/></div>
    <g:javascript library="application"/>
    <r:layoutResources />
</body>

结果 HTML 是 grails 将两个 js 文件连接为一个,并将 script 标签放在末尾。

.
.
.    
<div id="spinner" class="spinner" style="display:none;">Loading&hellip;</div>

    <script src="/Tiv2/static/bundle-bundle_jquerymobile_defer.js" type="text/javascript" ></script>

    <script src="/Tiv2/static/js/application.js" type="text/javascript" ></script>

        </body>
    </html>

这会导致页面出现不良行为。单击链接时,我可以看到浏览器中的地址栏已更改,但页面未刷新并停留在单击链接的当前页面上。只有在手动刷新页面(F5)后,浏览器才会加载链接的页面。

我尝试使用常规标签,一切正常。如何防止 Grails 将 js 文件合并为一个?

谢谢

4

2 回答 2

2

您可能希望在声明资源时使用 exclude 参数,这样捆绑映射器就不会运行。

jquerymobile{
    resource url:'css/jquery.mobile-1.3.2.css', exclude: 'bundle'
    resource url:'js/jquery.mobile/jquery.js', exclude: 'bundle'
    resource url:'js/jquery.mobile/jquery.mobile-1.3.2.js', exclude: 'bundle'
}

文档涵盖了这一点并且非常好。你应该总是从那里开始。

于 2013-10-03T16:18:37.473 回答
2

另一种选择是

jquerymobile{
    defaultBundle false
    resource url:'css/jquery.mobile-1.3.2.css'
    resource url:'js/jquery.mobile/jquery.js'
    resource url:'js/jquery.mobile/jquery.mobile-1.3.2.js'
}

这将禁用此模块中所有资源的捆绑

于 2013-10-03T16:58:38.570 回答