在Grails

时间:2016-01-29 00:34:37

标签: jquery grails

在Jquery代码中我试图添加grails模板如下,但没有任何反应:

$(document).ready(function() {
 var div1= $("#div1");
 alert("test");
 div1.append("<g:render template='form'/>")
});

我需要最终的结果是这样的:

<div id="div1">
<g:render template='form'/>
</div>
我错过了什么吗?

3 个答案:

答案 0 :(得分:1)

我找到了一种方法,通过在页面中放置所有需要的模板并在页面加载时隐藏它们并在以后根据某些条件显示它们,也不要忘记禁用其余的 divs 例如使用Jquery:

$('#div2 :input').attr('disabled', true);

否则您在提交表单时将面临问题。

答案 1 :(得分:0)

<g:render template='form'/>标记在进入客户端(浏览器)之前在服务器上处理。如果您使用jQuery使用append方法更改DOM,那么您只是改变了浏览器正在使用的生成的DOM,而服务器却不知道。

服务器不知道更改,服务器也不能在客户端收到文档后更改文档。

如果要在生成文档后使用g:render标记并更改视图,则需要尝试其他方法。一些可能性:

  • 将模板放置到位,但隐藏并使用jQuery显示模板
  • 将模板作为字符串放在<script>标记内,并使用jQuery追加字符串
  • 如果模板是staic,请不要使用g:render标记,而是使用jQuery异步加载文件并附加

我确信还有其他方法。

答案 2 :(得分:0)

显然这不起作用,因为<g:render template='form'/>在页面load期间呈现。您可以AJAX拨打controller并附加结果。