我已将新的Javascript库添加到“ApplicationResources”:
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…"/></div>
<g:javascript library="application"/>
<r:layoutResources />
</body>
结果HTML是grails将两个js文件连接成一个并将脚本标记放在最后。
.
.
.
<div id="spinner" class="spinner" style="display:none;">Loading…</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文件合并为一个?
由于
答案 0 :(得分: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'
}
documentation涵盖了这一点并且相当不错。你应该总是从那里开始。
答案 1 :(得分: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'
}
这将禁用此模块中所有资源的捆绑