Angular ui-select не отображает список опций при включении в angular-ui-bootstrap modal
я столкнулся с проблемой anular-ui-bootstrap modal
11 ответов
нужно добавить атрибут: append-to-body="false"
или, если вам нужно, измените CSS:
body > .ui-select-bootstrap.open {
z-index: 1100; /* greater then ui bootstrap modal, that 1050 */
}
в $templateCache в нижней части select.js ui-select, первый шаблон - " bootstrap / choices.ТПЛ.html', в котором 'ng-show=\" $select.предметы.длина > 0\"' присутствует, что это делает, чтобы скрыть выпадающий список появлялся, когда нет выбора для отображения.
Я понял, что ваша проблема заключается в том, что когда ui-select рендеринг в модальном, коллекция (в вашем случае адреса) пуста, и поэтому ее длина равна 0, в результате добавляется класс " ng-hide элемент, вызывающий проблему.
мой способ взлома это просто удалить 'ng-show=\" $select.предметы.длина > 0\"', или измените его на 'ng-show=\" $select.предметы.длина >= 0\"'(что делает его бесполезным). Побочный эффект заключается в том, что выпадающий список будет показывать пустой банковский список, когда нет выбора для отображения. Мне скорее нравится боковой эффект, он дает пользователю уверенность в том, что список работает.
высота пустого списка, однако, слишком узкая, и поэтому я бы добавил класс css в сделайте пустой список немного выше:
.ui-select-choices{ min-height: 30px;}
Спасибо за все ваши ответы на мой вопрос. На самом деле я много пытался решить эту проблему, и, наконец, я сам понял, что это какая-то проблема с AngularJS, я думаю. Да, я смог исправить это, просто обновив версия AngularJS от 1.2.16 до 1.2.20. И рабочая ссылка здесь
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.js"></script>
до
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.20/angular.js"></script>
а также незначительное исправление ниже
<div ng-bind-html="address.a | highlight: $select.search"></div>
до
<div ng-bind-html="address.name | highlight: $select.search"></div>
У меня была такая же проблема, решил ее с:
<div class="row" ng-controller="*protopathyUISelectCtrl as ctrl*">
<div class="form-group m-b-sm required col-md-4 col-xs-3" >
<div class="input-group">
<span class="input-group-addon">test</span>
<ui-select ng-model="ctrl.country.selected" theme="bootstrap" title="Choose a country" ng-disabled="disabled" append-to-body="false">
<ui-select-match placeholder="test">{{$select.selected.name}}</ui-select-match>
<ui-select-choices repeat="country in ctrl.countries | filter: $select.search">
<span ng-bind-html="country.name | highlight: $select.search"></span>
<small ng-bind-html="country.code | highlight: $select.search"></small>
</ui-select-choices>
</ui-select>
</div>
</div>
</div>
Если вы измените строку:
<ui-select-choices repeat="address.name in addresses track by $index" refresh-delay="0">
http://plnkr.co/edit/ybGQ9utrxR2sr8JyVc3g?p=preview
он отображает имя адреса.
ошибка возникает здесь в select.js
(line 610: ctrl.searchInput.css('width', '10px');)
в этом случае входной тег имеет ширину: 10px. Вы можете щелкнуть в этой 10px-области - и она будет работать. Поскольку мы используем этот lib через bower-я исправил его, не касаясь источника следующим образом:
<ui-select-match placeholder="placeholder..." ng-class="{empty: !account.roles.length}">{{::$item.name}}</ui-select-match>
Итак, если массив модели пуст - просто сделайте ширину входного сигнала 100%. Мы используем тему 'select2'
.empty.ui-select-match + .select2-search-field,
.empty.ui-select-match + .select2-search-field input{
width: 100% !important;
}
у меня была такая же проблема, я исправляю ее, добавляя атрибут append-to-body="false"
.
<ui-select title="Origem" ng-disabled="disabled" append-to-body="false">
...
</ui-select>
у меня была аналогичная проблема. Я решил это, заменив ng-show
С ng-if
<button ng-click="toggle=!toggle">Toggle</button>
<div ng-if="toggle">
<ui-select multiple ng-model="data.projectStatusArray" theme="bootstrap" ng-disabled="disabled" style="margin:0px;">
<ui-select-match class="ui-font-medium" placeholder="Choose Filter"> {{$item.display_name}} </ui-select-match>
<ui-select-choices repeat="fl.name as fl in filterByArray | filter: $select.search">
{{fl.display_name}}
</ui-select-choices>
</ui-select>
</div>
у меня также была такая же проблема, поэтому я просто изменил:
append-to-body="true"
в:
append-to-body="false"
Я также встретил эту проблему при использовании ui-modal, и я решаю это, используя условие "ng-class" для :
модала.HTML-код ``
<ui-select ng-model="person.selected" theme="bootstrap" on-select="onSelect($item)" ng-click="select_open = true">
<ui-select-match placeholder="制作者">{{$select.selected.name}}</ui-select-match>
<ui-select-choices repeat="item in people | propsFilter: {name: $select.search, email: $select.search}" ng-class="{ 'select_open': select_open }">
<div ng-bind-html="item.name | highlight: $select.search"></div>
<small ng-bind-html="item.email | highlight: $select.search"></small>
</ui-select-choices>
<ui-select-no-choice>
一致するものは見つかりませんでした。
</ui-select-no-choice>
</ui-select>
``
app.js ``
$scope.onSelect = function(item) {
$scope.open_select = false;
}
``
стиль.в CSS ``
.select_open {
opacity: 1 !important;
}
``
надеюсь, что это помогает.