Závislé selectboxy a plugin select2

- schnappi
 - Člen | 13
 
Ahoj,
pracujem na spracovávaní závislých selectBoxov, kde podľa výberu možnosti z prvého selectBoxu sa dynamicky mení obsah druhého selectBoxu. Používam pritom AJAXové spracovanie, môj JS kód vyzerá asi takto:
<script>
$('#mySelect1').off('change').on('change', function () {
	var myValue = 0;
	// ...
    $.nette.ajax({
        type: 'GET',
        url: {link {$link}!},
        data: {
            'myForm-myValue': myValue,
        }
    });
</script>
Všetko funguje dobre, volá sa správny handler so správnymi hodnotami. V handleri potom upravím druhý selectbox a pomocou metódy redrawControl(‚…‘) ho úspešne prekreslím.
Nad selectboxami ale používam plugin select2. Takto inicializujem daný selectbox:
<script>
		$('#mySelect2').select2({
            width: '100%',
            theme: 'bootstrap',
            language: 'cs',
        });
</script>
A tiež to funguje. Až do chvíle než refreshnem druhý selectbox pomocou
handleru. Na iných fórach som našiel, že je možné daný select zrušiť
pomocou .select2('destroy') a znova reinicializovať. Alebo že je
možné jednoducho upraviť dáta tela select2 (pri udalosti onChangeEvent
selectu). Ale vyzerá to tak, že vždy po naplnení dát do select2 sa vykoná
handler vyššie a požadovaný selectbox znova prekreslí tak, že select2 nad
ním nefunguje.
Nestretol sa s tým niekto alebo nevedel by niekto poradiť. Za každú odpoveď ďakujem.

- Mistrfilda
 - Člen | 77
 
Ahoj, nejsem si úplně jistý jestli je to čisté řešení :), ale zkusím to. Udělal bych si snippet nad druhým scriptem:
{snippet select2Script}
<script>
        $('#mySelect2').select2({
            width: '100%',
            theme: 'bootstrap',
            language: 'cs',
        });
</script>
{/snippet}
A potom v handle metodě, kde ho plníš daty, bych ho po naplnění a překreslení zavolal
<?php
public function handleFill($id)
{
    //naplnění daty
	$this->redrawControl(.....); //překreslení selectboxu
	$this->redrawControl('select2Script'); //překreslení scriptu pro select2
}
?>