Я обновляю форму таблицы. Каждая строка в таблице имеет несколько элементов, включая два выпадающих списка в отдельных столбцах для каждой строки. Я обновил таблицу до ng-grid и обновил выпадающие списки из простых виджетах в стиле bootstrap drop-down elements, чтобы соответствовать другим на сайте. Существенная проблема, которую я испытываю, заключается в том, что макет CSS ng-grid приводит к тому, что фактическое выпадающее меню будет помещено за ячейку ниже, и поэтому не видно. Изучение элементов показывает, что они фактически отображаются, имеют правильную высоту, ширину и содержание, но просто отображаются за содержимым в другой ячейке. Я попытался отключить переполнение CSS: скрытый в желаемых ячейках, но похоже, что это свойство также установлено для всей сетки, и отключить его на этом уровне полностью нарушает макет сетки. У меня есть рабочий обход, но он заставляет меня принять душ, и я уверен, что есть более элегантный способ сделать это:ng-grid stiding bootstrap style downdowns
1) поместил шаблон ячейки только для видимой части, включая ng- нажмите проходящий вызов колонна (CoffeeScript):
{field: "type",
displayName: "Type",
width: 155,
original_width: 155,
pinned: false,
cellClass: "type_col",
headerClass: "type_col",
cellTemplate: """<div ng-click="editor.activeCol(col)" class="btn-group">
<button ng-show="row.entity[col.field]" style="width: 125px"
class="btn dropdown-toggle blk-txt" href="#">
{{row.entity[col.field]}}</button><button class="btn">
<span class="caret"></span></button></div>"""
},
2) Поставьте выберите строку обратный вызов к другому методу:
multiSelect: false,
enableRowSelection: true,
afterSelectionChange: angular.bind(@, selectFunc),
3) иметь совершенно отдельный угловой шаблон из вариантов раскрывающихся что классифицируется как всегда отображаемый открытый для бутстрапа, но имеет как ng-show, так и ng-styl е элементы, чтобы мой код, чтобы изменить его видимость и точное местоположение:
<div ng-show="editor.utilization" ng-style="editor.dropdown_style">
<div class="btn-group editor-widget open">
<ul class="dropdown-menu">
<li ng-click="editor.selectUtil('heavy')"><a href="#">Heavy</a></li>
<li ng-click="editor.selectUtil('medium')"><a href="#">Medium</a></li>
<li ng-click="editor.selectUtil('light')"><a href="#">Light</a></li>
</ul>
</div>
</div>
Когда пользователь нажимает на (кажущемся) падение вниз, происходит следующее:
1) нг щелкните событие доставляет столбец к классу, это хранится
2) строки выбор (afterSelectionChange) обратный вызов триггера со строкой и имеет возможность получить столбец из предыдущего вызова, с обеими строками и столбцами теперь мы знаем реальную ячейку
3) Точная позиция экрана o f ячейка, о которой идет речь, захватывается, и шаблон выпадающего выбора становится видимым непосредственно под нажатой ячейкой, создавая иллюзию нормальной выпадающей операции.
Это длинное объяснение, но я хотел бы дать фон тому, что я пробовал, чтобы показать, что я ищу более простой (надеюсь, намного более простой) способ просто включить стилизованные выпадающие виджеты в виде ng-grid клетки. Вся суть этого проекта заключается в том, чтобы стилизовать и украсить уже рабочие формы, поэтому решения, которые работают только путем резки стиля для чистой функциональности, на самом деле не служат цели.
не думайте, что вы сможете сделать это внутри ng-сетки, поскольку он использует абсолютное положение DIv для ячеек с фиксированной высотой и переполнением скрытых. Мог бы попробовать изменить переполнение ячеек/строк. Альтернативой будет директива create, которая размещает выпадающий список поверх сетки на основе смещения posiiton ячейки или использует другую сетку – charlietfl