问题是这样的:
我有一个页面,例如 www.app.com/home,并且有一些窗口通过 jquery 以幻灯片方式添加到 DOM。其中一个窗口具有查找 Gmail 帐户中联系人的功能。
这是通过以下方式完成的:
- 用户位于主页。
- 点击“搜索好友”按钮,然后出现一个包含许多选项的窗口 滑入(由jquery添加,内容在另一个.gsp中)
- 点击 gmail 选项,它会重定向到 google oauth, 权限和帐户选择,他必须接受访问 到他/她的联系人列表。
- 一旦接受,它会再次重定向到我的主页,在那里我有一个 var 知道它是否是来自谷歌的回调,所以我运行了脚本 再次显示弹出窗口。
我遇到的问题是,从主页本身,我可以访问具有 ${friendList} 的 Controller 传递的模型,但是当我向弹出窗口添加一些代码时,${friendList} 是未检测到。
最佳答案
我过去曾使用grails渲染模板来解决这个问题。你可以有一个隐藏的div,jquery 在弹出时取消隐藏它。例如
<div id="theSlideWindow" style="display:none">
<g:render template="gsptemplate" collection="${friendList}" var="myfriend" />
</div>
现在,当单击按钮时,jquery 将取消隐藏 div 并为其设置动画,无论您如何对其进行动画处理。现在,根据friendList的大小,这不是很有效,因为它会在每次刷新时加载。
但是您仍然可以通过执行以下操作来使 jquery 加载工作:
将用户 ID 添加到隐藏输入。
<input type="hidden" value="${userid}"/>
使用 jquery,因此将 id 作为参数发送:
$('button').click(function() { var page = "gspurl/show?userid=" + $("#hidden").val(); $("div").load(page, function(response, status, xhr) { //do something here }); return false; });
在您的 gsp 中使用 userid 加载好友列表。
另一种选择是使用返回 html 或 json 而不是 gsp 的 Controller 。
显然,有几种不同的方式来传递friendList,但希望这能给您一些想法。
关于javascript - 在 Grails 中将模型传递到添加到 DOM 弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21791968/