web36m
@web36m
Coder

AngularJS select «nothing was selected, we have to insert the undefined item»?

Проблема такая:
jsfiddle.net/agH3b/ — пустой item в select.

Как от него избавиться?

Товарищи разработчики решили, что github.com/angular/angular.js/blob/master/src/ng/d...

средствами css попытка сокрыть такой option в хроме не увенчалась ничем, а в firefox интересным поведением
jsfiddle.net/6kZUB/1/ — просто пустой select
jsfiddle.net/6kZUB/2/ — select с пустым option (изменилась высота)
jsfiddle.net/6kZUB/3/ — select с пустым option (в css display: none) (select с нулевой высотой)
jsfiddle.net/6kZUB/4/ — то же самое, но можно убирать option (даже если removeChild пустой option — по высоте всё равно 0, хотя должно стать как в первом случае)
jsfiddle.net/6kZUB/5/ — тут option без css, тоже можно убирать (2й случай сменяется на 1й)
jsfiddle.net/6kZUB/6/ конечный результат 4го (должен был быть)

# lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 6.0.7 (squeeze)
Release:	6.0.7
Codename:	squeeze

$ google-chrome --version && firefox --version
Google Chrome 26.0.1410.63 
Mozilla Firefox 20.0
  • Вопрос задан
  • 3749 просмотров
Решения вопроса 1
web36m
@web36m Автор вопроса
Coder
Делал pull-request — github.com/angular/angular.js/pull/2590. Они сказали, что люди иногда хотят, что бы был пустой option при size>1 и не приняли, но зато подсказали способ (хоть он не совсем логичный).
plnkr.co/edit/FkTJ1ECmtbBcNWKBqBib?p=preview
т.е. использовать атрибуты
select-maximum=«1»
multiple
size
— на данный момент это для меня годится в качестве решения
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
@mayorovp
jsfiddle.net/agH3b/3/
Или я не понял проблемы?
Ответ написан
maksimr
@maksimr
Вообще это косяк директивы 'select' им надо проверят на наличие атрибута 'size', так на вашем месте я бы написал им issue, или сделал pull-request, если еще не сделали этого.
Что бы потом другим разработчикам было проще жить.

P.S.
В спецификации ничего не говорится про выбор элемента по умолчанию, но пустой элемент точно там не должен присутствовать :)
Ответ написан
web36m
@web36m Автор вопроса
Coder
Видимо свою ngOptions Directive изобретать придется
Ответ написан
Комментировать
@1x1
option[value=""]:after, option[value="?"]:after {
    content: 'dummy';
    color: transparent;
}
option[value=""]:not(:last-child),option[value="?"]:not(:last-child) {
    display: none;
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы