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

これが機能するのはOKです...やや奇妙に思えますが、GSPで使用するためにコントローラーから送信されたgrails変数を使用することはできません

代わりに...変数をJavaScript変数に保存する必要があります。

eventInstanceしたがって、ie id、versionで使用するために使用したい変数のそれぞれについて、私がparams含む他のフィールドは、単純に次のようにしました。

<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()" )}" />

これが私のアプローチのある種のバグなのか、単に何か間違っているのかはわかりませんが、可能な限りすべての組み合わせを試しましたが、私が思いついた唯一の回避策のようです

于 2013-01-16T19:59:27.710 に答える
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 に答える
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 に答える