#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> . Но это работает!