Настройка UI-Выберите значение по умолчанию в Smart Table
Настройка UI-Выберите значение по умолчанию в Smart Table
У меня есть веб-проект на основе Angular, по которому я столкнулся с проблемой. Я загружаю данные в смарт-таблицу. В определении смарт-таблицы у меня есть столбец, определенный как ui-select (выпадающий список). Моя проблема, когда я загружаю данные строки. Я не могу получить ui-select по умолчанию для значения, возвращенного из базы данных. Например, мое умное определение таблицы выглядит следующим образом:
Кол 1 Кол 2 Кол 3 Кол 4
R1C1 R1C2 R1C3 R1C4 - Значение 1
R2C1 R2C2 R2C3 R1C4 - Значение 4
R3C1 R3C2 R3C3 R1C4 - Значение 2
R4C1 R4C2 R4C3 R1C4 - Значение 1
Мой поиск данных возвращается из базы данных Couchbase следующим образом:
[
{
Datavalue1: C1,
Datavalue2: C2,
Datavalue1: C3,
Datavalue2: C4-id
},
{
Datavalue1: C1,
Datavalue2: C2
Datavalue1: C3,
Datavalue2: C4-id
},
{
Datavalue1: C1,
Datavalue2: C2
Datavalue1: C3,
Datavalue2: C4-id
},
{
Datavalue1: C1,
Datavalue2: C2
Datavalue1: C3,
Datavalue2: C4-id
}
]
Я загружаю таблицу следующим образом
<tr ng-repeat='row in dG' st-select-row="row" style="white-space: nowrap" st-select-mode="multiple">
<td>{{ C1}}</td>
<td>{{ C2 }}</td>
<td> {{ C3}} </td>
<td>
<ui-select ng-model="row.data.filters.C4" theme="bootstrap" name="C4Col" style="width:400px">
<ui-select-match placeholder="Select C4"> {{ $select.selected.c4Name }}
</ui-select-match>
<ui-select-choices repeat="C4Array in C4Array | filter: $select.search"
style="position: relative;top: auto;left: auto; width: inherit">
<span ng-bind-html="C4Array.C4Name| highlight: $select.search"></span>
</ui-select-choices>
</ui-select>
</td>
В моих попытках загрузить выпадающий список C4 я выполнил следующее:
- используемый пользовательский интерфейс ng-selected = "C4"
- используемый ui-параметр ng-selected = "row.data.filters.C4 = C4"
- used ui-option ng-selected = "$ select.selected.c4Name = C4Name"
- ui-select ng-model = "row.data.filters.C4" theme = "bootstrap" name = "C4Col" style = "width:400px" ng-selected = "C4"
- Перестройте массив dG для включения данных C4-id и C4Name.
- использовал перестроить массив dG в качестве данных для попыток 1, 2, 3
- в ui-select ng-selected аналогично попыткам 1, 2, 3
В приведенном выше списке не все опробованные варианты. Я перепробовал так много разных вариантов, что если бы я знал, что у меня будет столько трудностей, я бы их спас.
Я знаю, что ng-модель для ui-select должна быть загружена со значением по умолчанию, прежде чем раскрывающийся список покажет это значение. Моя проблема вращается вокруг того, как установить модель ng для каждой строки в умной таблице.
Я буду признателен за любую помощь в решении этой проблемы.
1 ответ
Я решил эту проблему, заменив выражение ng-model на местоположение, хранящееся в моем контроллере клиента. Я предварительно установил расположение в контроллере клиента на возвращаемое значение базы данных (структура раскрывающегося списка) и соответствующее значение отображается в качестве значения по умолчанию для раскрывающегося списка.
Дополнительная информация добавлена 07.10.2016
После обнаружения моего первоначального решения проблемы не удалось после добавления возможности сортировки смарт-таблицы, я искал другое решение. Я полагаю, что после нескольких переделок данных, размещения данных и структур данных я нашел жизнеспособное решение. Решение оказалось настолько простым, что я не мог поверить, что оно сработало. Вместо того, чтобы отслеживать ng-модель для ui-select для выпадающего списка вне массива данных, я добавил его к реальным возвращаемым данным. Поскольку я выполнял извлечение данных RestAPI из базы данных couchbase, мне нужно было поместить данные в массив объектов для умной таблицы. Я просто добавил дополнительные поля в массив, установил для различных полей значение по умолчанию. Затем я изменил модель ng на новое поле в массиве. После этого я смог отсортировать данные, и значения по умолчанию остались связанными с соответствующими строками.