【发布时间】:2015-07-25 00:08:55
【问题描述】:
我有 2 个 grails 视图,它们都引用相同的布局:
index.gsp & custom.gsp
两个页面在<head> 中都有一个<script> 块。我希望能够直接转到 custom.gsp 或使用 index.gsp 的选项卡中的内容。
我正在包含 custom.gsp 内容,使用:
<g:include controller='controllername' action='custom'/>
似乎 custom.gsp 的 <script> 块正在覆盖 index.gsp 的 <script> 块。如果我删除了include,索引页面上的其他所有内容都会正常运行。如果我添加include,则不会执行 index.gsp 的<script> 块中的代码,并且经过检查似乎不存在。
这里到底发生了什么,为什么?我怎样才能以不同的方式组织事物,以免发生这种情况?
更新
我已尝试将 custom.gsp 中的代码从 <script> 块中移出并放入单独的 javascript 文件中。然而;当包含现在发生时,它仍然将代码作为<script> 块拉入并替换旧的。
我尝试将每个块的块移动到正文中,并尝试为每个块添加 id 属性,也许 sitemesh 可能会将其视为一个独特的块。还是没有运气。
更新 #2
我尝试将其添加到 index.gsp 的正文中:
<div>this is a script
<script type="application/javascript">
var xyz='xyz';
</script>
</div>
文本this is a script 可见但脚本不见了!
更新 #3
update #2 是错误的,文本是可见的,但脚本实际上也在那里。我认为它消失了,因为我观察到的行为与它消失时相同。然而;真正的问题是 index.gsp 的整个头部被包含页面的头部替换,因此 index.gsp 丢失了执行脚本代码所需的库。
【问题讨论】:
-
你有一个根本问题。您应该只使用
includeHTML 片段,例如templates而不是完整的页面或完整的 GSP。