【问题标题】:Passing a model to an added to DOM popup window in Grails将模型传递给 Grails 中添加到 DOM 的弹出窗口
【发布时间】:2014-02-15 00:45:13
【问题描述】:

问题来了:

我有一个页面,例如 www.app.com/home,我有一些通过 jquery 以幻灯片方式添加到 DOM 的窗口。其中一个窗口具有查看联系人的 gmail 帐户的功能。

这样做是这样的:

  1. 用户在主页中。
  2. 单击“搜索好友”按钮,出现一个包含许多选项的窗口 滑入(由 jquery 添加,内容在另一个 .gsp 中)
  3. 单击选项 gmail 并重定向到 googles oauth, 权限和帐户选择,他必须接受访问 到他/她的联系人列表。
  4. 一旦被接受,它会再次重定向到我的主页,在那里我有一个 var 知道它是否是来自谷歌的回调,所以我运行了脚本 再次显示弹出窗口。

我遇到的问题是,从主页本身,我可以访问具有 ${friendList} 的控制器传递的模型,但是当我向弹出窗口添加一些代码时,${friendList} 是未检测到。

【问题讨论】:

  • 你是如何将代码传递给弹出窗口的?
  • 哎呀,我用 $('#divname').load(page url) 之类的东西加载它

标签: javascript jquery grails


【解决方案1】:

我过去曾使用 grails 渲染模板来解决这个问题。你可以有一个隐藏的 div,当它弹出时 jquery 会取消隐藏。例如

<div id="theSlideWindow" style="display:none">
    <g:render template="gsptemplate"  collection="${friendList}" var="myfriend" />
</div>

现在,当单击按钮时,jquery 将取消隐藏 div 并对其进行动画处理,但是您正在对其进行动画处理。现在根据friendList的大小,这不是很有效,因为每次刷新都会加载它。

但是您仍然可以通过执行以下操作使 jquery 加载工作:

  1. 将用户 ID 添加到隐藏输入。

    <input type="hidden" value="${userid}"/>
    
  2. 使用 jquery 将 id 作为参数发送:

    $('button').click(function() {
        var page = "gspurl/show?userid=" + $("#hidden").val();
        $("div").load(page, function(response, status, xhr) {
         //do something here
        });
        return false;
    });
    
  3. 在您的 gsp 中使用用户 ID 加载好友列表。

另一种选择是使用返回 html 或 json 而不是 gsp 的控制器。

显然,传递friendList有几种不同的方式,但希望这能给你一些想法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多