2015-05-11 3 views
5

У меня есть загрузочный модальный, и внутри него у меня есть ui-select для тегов. Вот мой пример:clickable area ui-select inside - 10px 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> 

Моя проблема: Когда я открываю модальное с $('modal-invite').modal('show'), размер заполнителя (и активная область) составляет 10 пикселей, как это:

10px sized placeholder

Google Chrome inspector

После нажатия на него он получает правильную ширину.
Как я могу сделать ui-select обновить его размер, когда модаль открывается?

+0

Вы пробовали поставить UI-выберите инициализацию в модальный открытый обратный вызов? Похоже, что когда модальный открыт в первый раз, ui-select еще не инициализирован. –

+1

@DmitryS Хорошо, может быть, я нашел решение. Я попытался: '$ ('modal-invite'). Modal ('show')', а затем '$ scope. $ Apply();', и это похоже на работу! – ProGM

+0

Возможно, потому что, как сказал Дмитрий, ui-select пока не отображается, когда страница загружена. – eHx

ответ

2

Наконец-то я решил проверить источники ui-select.
Кажется, что ui-select пересчитывает размер ввода с помощью $watch на ширину родительского элемента.

Итак, для того, чтобы обновить его, я сделал так:

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

У меня такая же проблема. Вызов div, который имеет u-select одним нажатием кнопки.

. Не уверен, когда вызывать $ scope. $ apply() –

0

Я имел Двойники проблемы.

Я знаю, что изменить исходный файл не является хорошей практикой, и было бы лучше как-то настроить его на мой собственный код, но на данный момент я исправил его, комментируя строку в исходном коде, которая устанавливает поле ввода 10px при рендеринге тегов.

В строке 831 в файле select.js источника, закомментируйте: ctrl.searchInput.css('width', '10px');