2012-12-30 49 views
3

试图呈现所有联系人使用AJAX(This is a snippet的Grails的Ajax渲染列表行动

于是就点击,它会列出在更新行动在div的联系人。我有一个基本的日期功能(看到注释掉渲染动作控制器),以确保AJAX部分可以工作,测试,做,但处理名单我都击中在转圈圈墙

GSP

<g:remoteLink controller="event" action="showContacts" update="divContactList">Show Contacts!</g:remoteLink> 

<div id="divContactList">Show contacts Here... 
    <g:each in="${contactList}" status = "i" var="contact"> 
     <p>${contact.forname}</p>    
     <p>${contact.email}</p> 
    </g:each> 
</div> 

控制器

def showContacts = { 
    def contactList = Contact.findAllByUser(lookupPerson()) 
//  render "The time is now ${new Date()}" 
    render([contactList: contactList])   
} 

所以,总体来说它没有显示从日什么在Web页面电邮contactList,在此帮助,将不胜感激

+0

**更新** [链接](http://d.pr/i/mEXv) 这种作品...但是,我不是很对劲(请参考截图谢谢) – RST

回答

5

_templateName.gsp:

<g:each in="${contactList}" status = "i" var="contact"> 
     <p>${contact.forname}</p>    
     <p>${contact.email}</p> 
    </g:each> 

GSP:

<g:remoteLink controller="event" action="showContacts" update="divContactList">Show Contacts!</g:remoteLink> 

<div id="divContactList">Show contacts Here... 
    <g:render template="layouts/templateName" model="[contactList: contactList]" /> 
</div> 

控制器:

def showContacts = { 
    def contactList = Contact.findAllByUser(lookupPerson()) 
//  render "The time is now ${new Date()}" 
    render(template: 'layouts/templateName', model:[contactList: contactList])   
} 
+0

感谢您对詹姆斯的回应,伟大的小解决方案!我花了无数个小时搞乱了。我从你们俩身上学到了很多东西。 – RST

3

点击远程链接将发送一个AJAX调用showContacts行动,得到一个HTML答案,updatedivContactList与返回答案的内容。 showContacts动作将呈现具有相同名称的模板,并将它作为模型的一部分传递给contactList。 如果您想AJAX调用来呈现的联系人列表,你可以尝试以下options之一:

  1. 内容为中心的Ajax - 有showContacts动作中渲染它显示接触
  2. 列表中选择一个模板
  3. 数据为中心的Ajax - 有showContacts行动派代表联系人列表中的JSON/XML响应,并有一个客户端的JavaScript代码,使这个JSON/XML作为联系人列表
+0

首先感谢您的回复! 有趣的是,有一件事在文档上有点混淆,在网站上有一个例子,它的数据中心选项更新为“富”,但没有任何HTML明智的与此...可以告诉我,请它是在这种情况下的目的? – RST

+0

本示例演示如何使用JavaScript方法更新内容。不知道为什么它包含“foo”更新,因为更新属性是可选的 –