【发布时间】:2014-06-02 20:13:21
【问题描述】:
所以我正在创建 2 个下拉菜单,其中第二个会根据第一个动态变化。但是,第二个菜单不会呈现更改,但在使用 Firebug 查看帖子时会提供正确的选项。
这里是渲染菜单的函数
def findSubtagsForTags(){
print Tag.getAll()
def tag = Tag.get(params.tag.id)
render(template: 'subtagSelection', model: [subtags: tag.subtags])
}
这个方法在我的 _form.gsp 模板中被调用,该模板由 create.gsp 调用(大部分都是由 grails 脚手架生成的)。这是我的代码 sn-p 我在哪里调用它
<g:select name="tag.id" from="${Tag.list()}" optionKey="id" optionValue="tagName"
noSelection="['':'Choose Tag']"
onchange="${remoteFunction (
controller: 'tag',
action: 'findSubtagsForTags',
params: '\'tag.id=\' + this.value',
update: 'subtagSelection'
)}" />
<td id="subtagSelection" valign="top">
<select>
<option>Choose Tag</option>
<g:select name="subtags.id" id="subtags.id" from="${[]}" optionKey="id"/>
</select>
</td>
并且正在呈现的 subtagSelection 模板是
<g:select name="subtag.id" from="${subtags}" optionValue="name" optionKey="id" id = "subtags.id"/>
页面上的第二个菜单总是“选择标签”,但是使用Firebug,当我看帖子时,这是生成的
<select name="subtag.id" id="subtags.id" >
<option value="1" >Training</option>
<option value="2" >Software</option>
</select>
但是,第二个菜单没有变化。
在firebug的Net选项卡下,这是我的函数调用的'put'请求
Post:
Parameters : tag.id 1
Source:
tag.id=1
回复:
<select name="subtagSelection" id="subtagSelection" >
<option value="1" >Training</option>
<option value="2" >Software</option>
</select>
有什么想法/解决方案吗?
编辑:使用https://stackoverflow.com/a/3771240/3691484 作为参考,更改了我的代码,并更改了模板文件等,问题得到了解决
【问题讨论】:
-
您需要使用 Firebug(或类似工具)来查看发送到
remoteFunction调用并从调用中接收到的内容(使用 FB 中的 Net 面板)。我猜参数可能不太正确。还要检查页面中没有重复的#subtagSelection元素。 -
编辑了以上内容以显示我的萤火虫“网络”结果。此外,在 remoteFunction 中,更新参数是否应该引用
?或