2015-05-11 1 views
5

Ich habe ein Bootstrap-modal und, in ihm, ich habe eine UI-Auswahl zum Taggen. Hier ist mein Beispiel:anklickbarer Bereich von ui-select innen ist 10px ein Bootstrap modal

<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> 

Mein Problem ist: Wenn ich das modale mit $('modal-invite').modal('show') öffnen, die Größe des Platzhalter (und den klickbaren Bereich) 10 Pixel, wie folgt aus:

10px sized placeholder

Google Chrome inspector

Nach dem Klicken wird die richtige Breite angezeigt.
Wie kann ich die Größe von ui-select aktualisieren, wenn das Modal geöffnet wird?

+0

Haben Sie versucht, ui-select Initialisierung in modal geöffnet Rückruf zu setzen? Es scheint, dass, wenn Modal zum ersten Mal geöffnet wird, ui-select noch nicht initialisiert ist. –

+1

@DmitryS Ok, vielleicht habe ich die Lösung gefunden. Ich habe versucht: '$ ('modal-invite') .modal ('show')' und dann '$ scope. $ Apply();', und das scheint zu funktionieren! – ProGM

+0

Wahrscheinlich, weil, wie Dmitry sagte, die ui-Auswahl wird noch nicht angezeigt, wenn die Seite geladen ist. – eHx

Antwort

2

Schließlich löste ich die Überprüfung der ui-Select-Quellen.
Es scheint, dass ui-select die Eingabegröße mit einem $watch auf der übergeordneten Breite neu berechnet.

Also, um es zu aktualisieren, habe ich wie folgt aus:

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

Ich habe ein ähnliches Problem. Ein div aufrufen, das durch einen Klick auf eine Schaltfläche ausgewählt werden kann.

. Nicht sicher, wann $ scope aufgerufen werden soll. $ apply() –

0

ich simular Problem hatte.

Ich weiß, das Ändern einer Quelldatei ist keine gute Übung, und es wäre besser, irgendwie von meinem eigenen Code zu zielen - aber jetzt habe ich es durch Auskommentieren einer Zeile im Quellcode behoben, der das Eingabefeld festlegt 10px beim Rendern der Tags.

In Zeile 831 in der Quelle select.js Datei auf Kommentar: ctrl.searchInput.css('width', '10px');

Verwandte Themen