$ {var} не заменяется в событии Select onchange

#select #grails #onchange

#выберите #grails #onchange

Вопрос:

У меня есть следующий select в шаблоне, который я визуализирую, передавая i в модели. $ {i} get заменяется значением i, как и ожидалось в большинстве мест. Но $ {i} не заменяется в событии onchange.

Итак,

 <g:select class='setTagtypeValue-class'
        name='tagtype-${i}-header'
        from="${org.maflt.ibidem.Tagtype.list(sort:'tagtype').groupBy{it.tagtype}.keySet()}"
        value="${setTagtypeValue?.tagtype?.tagtype}"
        noSelection="${['null':'Select One...']}"
        onchange="${remoteFunction(action:'options', update:'tagtype-options-${i}',  
                    params:''tagtype='   this.value  'amp;i=${i}'' )}" />
  

отображается как:

 <select name="tagtype-0-header" onchange="jQuery.ajax({type:'POST',data:'tagtype='   this.value  'amp;amp;i=${i}', url:'/ibidem/metadataSet/options',success:function(data,textStatus){jQuery('#tagtype-options-${i}').html(data);},error:function(XMLHttpRequest,textStatus,errorThrown){}});" class="setTagtypeValue-class" id="tagtype-0-header">
<option value="null">Select One...</option>
<option value="abstract">abstract</option>
. . .
</select>
  

Обратите внимание, что, например, для name было установлено значение «tagtype-0-header», но при onchange я получаю

 data:'tagtype='   this.value  'amp;amp;i=${i}'
  

Также обратите внимание, что когда этот шаблон используется во время создания, где замена происходит на стороне клиента, все работает так, как ожидалось. Итак, единственная проблема заключается в том, что во время редактирования, работающего на стороне сервера, $ {i} не заменяется в событии onchange.

Есть идеи?

Ответ №1:

Поскольку вы уже находитесь внутри ${} , внутреннее ${} значение будет проигнорировано. Попробуйте это:

 <g:select class='setTagtypeValue-class'
    name='tagtype-${i}-header'
    from="${org.maflt.ibidem.Tagtype.list(sort:'tagtype').groupBy{it.tagtype}.keySet()}"
    value="${setTagtypeValue?.tagtype?.tagtype}"
    noSelection="${['null':'Select One...']}"
    onchange="${remoteFunction(action:'options', update:'tagtype-options-'   i,  
                params:''tagtype='   this.value  'amp;i='   i   ''' )}" />
  

Комментарии:

1. Это делает свое дело. К сожалению, чтобы избежать множества других изменений, мне нужно иметь 2 выбора, завернутые в <g: if> . Но это работает!