我希望在复选框内的 remoteFunction 中动态设置参数。我尝试了很多不同的组合,我将在下面展示几个,但我只是收到如下的错误......
所以基本上我的理论,在这个方法的范围内并不知道eventInstance是什么
在 FireBug错误控制台中,我收到ReferenceError: eventInstance is not defined
Test Combination 1
<g:checkBox name='completed' value="${eventInstance.completed}"
onclick="${remoteFunction(action:'update', id:eventInstance.id, params:'\'id=\' + eventInstance.id+\'&version=\' + eventInstance.version' , onComplete: "tester()" )}" />
Test Combination 2
<g:checkBox name='completed' value="${eventInstance.completed}" evt="${eventInstance}"
onclick="${remoteFunction(action:'update', id:eventInstance.id, params:"[version=evt.version, editType='occurrence', title=evt.title, startTime=start, endTime=end, isRecurring=evt.isRecurring, completed='true']", onComplete: "tester()" )}" />
如果手动输入即硬编码数据,这是有效的,但这是没用的。愚蠢的东西,我找不到答案:(
答案 0 :(得分:1)
确定这个有用...看起来有点奇怪,你不能使用grails变量,即从控制器发送以在GSP中使用
相反......你必须将变量保存到JavaScript变量中。
因此,对于我想在eventInstance
中使用的params
中使用的每个变量,即id,version,我在其中包含的任何其他字段只执行以下操作:
<script type="text/javascript">
function tester() {
$('#calendar').fullCalendar('refetchEvents');
}
var test0 = ${eventInstance.id};
var test1 = ${eventInstance.version};
var test3 ='${eventInstance.title}';
var test4 = '${start}';
var test5 = '${end}';
var test6 = ${eventInstance.isRecurring};
alert(test0 + test1 + test3 + test4 + test5 + test5 +
</script>
然后在remoteFunction
的params部分引用了这些变量,如下所示:
<g:checkBox name='completed' value="${eventInstance.completed}"
onclick="${remoteFunction(action:'update', id:eventInstance.id, params:'\'id=\' + test0+\'&version=\' + test1+\'&editType=\'+"occurrence"', onComplete: "tester()" )}" />
不确定这是某种错误还是我的方法中的错误,但是我已经尝试了所有单一组合,似乎唯一可以解决的解决方案
答案 1 :(得分:1)
这可以帮到你,
onchange="${remoteFunction(asynchronous: false, controller: 'mycontroller', action: 'remoteMethod', params: '\'p1='+params?.p1+'&p2=less&p3=\'+ this.value', update: 'remoteDiv')}"
试试这个。
答案 2 :(得分:0)
这可以帮到你,
onchange="$
{
remoteFunction(asynchronous: false,
controller: 'mycontroller',
action: 'remoteMethod',
params: '\'p1='+params?.p1+'&p2=less&p3=\'+ this.value', update: 'remoteDiv')}"
试试这个。