javascript - 在 Grails 中将模型传递到添加到 DOM 弹出窗口

标签 javascript jquery grails

问题是这样的:

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

这是通过以下方式完成的:

  1. 用户位于主页。
  2. 点击“搜索好友”按钮,然后出现一个包含许多选项的窗口 滑入(由jquery添加,内容在另一个.gsp中)
  3. 点击 gmail 选项,它会重定向到 google oauth, 权限和帐户选择,他必须接受访问 到他/她的联系人列表。
  4. 一旦接受,它会再次重定向到我的主页,在那里我有一个 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 加载工作:

  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 中使用 userid 加载好友列表。

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

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

关于javascript - 在 Grails 中将模型传递到添加到 DOM 弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21791968/

相关文章:

css - 如何使用下载的 Bootstrap 文件

javascript - 无法使用 loopbackjs 验证 nodejs 中的第一个证书

javascript - 按降序对数字进行排序,但以 `0` 开头

JavaScript regex.test Firefox 与其他浏览器,不同的行为

像 StackOverflow 的输入标签一样的 jQuery 自动完成标签插件?

grails - grails heroku插件-无法解析类grails.plugin.cloudsupport.AbstractCloudTagLib

javascript - 播放 AudioBufferSourceNode 两次?

javascript - 当内容到达div底部时如何将div中的内容打包以向右移动

javascript - mootools 比 jquery 有什么优势?

grails - 在脚手架 View 中显示域 transient 属性