【问题标题】:Grails - Select box tied to object ID and remote fieldGrails - 选择框绑定到对象 ID 和远程字段
【发布时间】:2012-06-05 04:42:48
【问题描述】:

遇到一个越来越令人沮丧的奇怪问题

场景:我有一个域对象列表,每个对象都有一个 g:select 附加到它,它由远程字段呈现。

如何将状态变量或 personInstance ID 绑定到选择框,以便在使用 renderField 时更新 testDiv_(number)

查看:

<g:each in="${listOfPeople}" status="i" var="personInstance">
<td>
    Text: <g:remoteField action="getResults" controller="person" id="" update="testDiv_${personInstance.id}" paramName="search" name="getResults" value="" />
    <g:each in ="${personInstance?.choices}" var="choice" status="x">
        <li>${choice}</li>
    </g:each>
</td>
<td>
    <g:render template="renderThisTemplate"></g:render>
</td>
</g:each>

模板:

<div id="testDiv_${personInstance.id}" class="testDiv_${personInstance.id}">
    <g:select id="aChoice" name="aChoice.id" from="${allChoices}" optionKey="id" value="" />
    <g:actionSubmit action="addChoice" value="Add"/>
</div>

编辑

我知道远程调用 (ajax) 正在传递 testDiv_(number) 的更新。问题在于模板 ID 并将该值分配给模板 div。

【问题讨论】:

    标签: ajax grails


    【解决方案1】:

    以防将来有人需要这个答案。显然您不能从模板中引用 g:each 中的实例变量 (personInstance)。

    所以我用它的代码替换了 g:render 并且它起作用了:

    <g:each in="${listOfPeople}" status="i" var="personInstance">
    <td>
        Text: <g:remoteField action="getResults" controller="person" id="" update="testDiv_${personInstance.id}" paramName="search" name="getResults" value="" />
        <g:each in ="${personInstance?.choices}" var="choice" status="x">
            <li>${choice}</li>
        </g:each>
    </td>
    <td>
    <div id="testDiv_${personInstance.id}" class="testDiv_${personInstance.id}">
        <g:select id="aChoice" name="aChoice.id" from="${allChoices}" optionKey="id" value="" />
        <g:actionSubmit action="addChoice" value="Add"/>
    </div>
    </td>
    </g:each>
    

    【讨论】:

    • 如果你将实例传递给模板,你可以 - 另外,render 是一个“空”标签,所以你不需要结尾 - 只需使用“/>”
    猜你喜欢
    • 1970-01-01
    • 2012-04-08
    • 2012-11-11
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-06
    相关资源
    最近更新 更多