0

我想在复选框内的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()" )}" /> 

如果手动输入即硬编码数据,则此方法有效,但这没有用。一些愚蠢的东西,我只是找不到答案:(

4

3 回答 3

1

这可以帮助你,

onchange="${remoteFunction(asynchronous: false, controller: 'mycontroller', action: 'remoteMethod', params: '\'p1='+params?.p1+'&p2=less&p3=\'+ this.value', update: 'remoteDiv')}" 

试试这个。

于 2013-01-18T06:19:55.177 回答
1

可以这样工作......看起来有点奇怪,你不能使用 grails 变量,即从控制器发送到 GSP 中使用

相反......您必须将变量保存JavaScript 变量中。

eventInstance因此,对于我想在paramsid、版本、包含在其中的任何其他字段中使用的每个变量,我只需执行以下操作:

<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如下:

<g:checkBox name='completed' value="${eventInstance.completed}"
onclick="${remoteFunction(action:'update', id:eventInstance.id, params:'\'id=\' + test0+\'&version=\' + test1+\'&editType=\'+"occurrence"', onComplete: "tester()" )}" />

不确定这是某种错误还是我的方法有问题,但是我已经尝试了每一种可能的组合,似乎是我能想出的唯一解决方案

于 2013-01-16T19:59:27.710 回答
0

这可以帮助你,

    onchange="$
    {
         remoteFunction(asynchronous: false, 
              controller: 'mycontroller', 
              action: 'remoteMethod', 
              params: '\'p1='+params?.p1+'&p2=less&p3=\'+ this.value', update: 'remoteDiv')}" 

试试这个。

于 2013-01-18T06:21:22.337 回答