2015-05-11 6 views
5

Ho un modal bootstrap e, al suo interno, ho una selezione ui per il tagging. Ecco il mio esempio:l'area selezionabile di ui-select inside è 10px un bootstrap modale

<div class="modal modal-invite"> 
    <div class="modal-dialog"> 
    <div class="modal-content"> 
     <div class="modal-header"> 
     <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 
      <span aria-hidden="true">&times;</span> 
     </button> 
     </div> 
     <div class="modal-body"> 
     <ui-select multiple tagging tagging-label="" ng-model="email_list" theme="bootstrap" ng-disabled="disabled" on-select="" on-remove="" title="Insert your friends email here." > 
      <ui-select-match placeholder="Your friends email here...">{{$item}}</ui-select-match> 
      <ui-select-choices repeat="email in email_list | filter:$select.search"> 
      {{email}} 
      </ui-select-choices> 
     </ui-select> 
     </div> 
     <div class="modal-footer"> 
     <button class="btn btn-success">Invite</button> 
     </div> 
    </div> 
    </div> 
</div> 

Il mio problema è: quando apro il modal con $('modal-invite').modal('show'), la dimensione del segnaposto (e l'area cliccabile) è di 10 pixel, in questo modo:

10px sized placeholder

Google Chrome inspector

Dopo aver fatto clic, ottiene la larghezza corretta.
Come posso rendere ui-select aggiornare le dimensioni quando si apre la modale?

+0

Hai provato a mettere l'inizializzazione ui-select in modal callback aperta? Sembra che quando modale viene aperto per la prima volta ui-select non è ancora inizializzato. –

+1

@DmitryS Ok, forse ho trovato la soluzione. Ho provato: '$ ('modal-invite'). Modal ('show')' e poi '$ scope. $ Apply();', e questo sembra funzionare! – ProGM

+0

Probabilmente perché, come ha detto Dmitry, la selezione ui non viene ancora visualizzata quando la pagina viene caricata. – eHx

risposta

2

Infine ho risolto il controllo delle fonti di selezione ui.
Sembra che ui-select ricalcoli la dimensione di input con uno $watch sulla larghezza genitore.

Così, al fine di aggiornarlo, ho fatto in questo modo:

$('.modal-invite').modal('show'); 
$scope.$apply(); 
+0

Sto avendo un problema simile. Chiamando un div che ha ui-select per click di un pulsante.

. Non sono sicuro quando chiamare $ scope. $ apply() –

0

Ho avuto problemi simular.

So che alterare un file sorgente non è una buona pratica, e sarebbe meglio in qualche modo indirizzarlo dal mio codice - ma per ora l'ho risolto commentando una riga nel codice sorgente che imposta il campo di input in 10px quando esegue il rendering dei tag.

In linea 831 nel file select.js fonte, commentate: ctrl.searchInput.css('width', '10px');