Настройка 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 я выполнил следующее:

  1. используемый пользовательский интерфейс ng-selected = "C4"
  2. используемый ui-параметр ng-selected = "row.data.filters.C4 = C4"
  3. used ui-option ng-selected = "$ select.selected.c4Name = C4Name"
  4. ui-select ng-model = "row.data.filters.C4" theme = "bootstrap" name = "C4Col" style = "width:400px" ng-selected = "C4"
  5. Перестройте массив dG для включения данных C4-id и C4Name.
  6. использовал перестроить массив dG в качестве данных для попыток 1, 2, 3
  7. в ui-select ng-selected аналогично попыткам 1, 2, 3

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

Я знаю, что ng-модель для ui-select должна быть загружена со значением по умолчанию, прежде чем раскрывающийся список покажет это значение. Моя проблема вращается вокруг того, как установить модель ng для каждой строки в умной таблице.

Я буду признателен за любую помощь в решении этой проблемы.

1 ответ

Я решил эту проблему, заменив выражение ng-model на местоположение, хранящееся в моем контроллере клиента. Я предварительно установил расположение в контроллере клиента на возвращаемое значение базы данных (структура раскрывающегося списка) и соответствующее значение отображается в качестве значения по умолчанию для раскрывающегося списка.

Дополнительная информация добавлена ​​07.10.2016

После обнаружения моего первоначального решения проблемы не удалось после добавления возможности сортировки смарт-таблицы, я искал другое решение. Я полагаю, что после нескольких переделок данных, размещения данных и структур данных я нашел жизнеспособное решение. Решение оказалось настолько простым, что я не мог поверить, что оно сработало. Вместо того, чтобы отслеживать ng-модель для ui-select для выпадающего списка вне массива данных, я добавил его к реальным возвращаемым данным. Поскольку я выполнял извлечение данных RestAPI из базы данных couchbase, мне нужно было поместить данные в массив объектов для умной таблицы. Я просто добавил дополнительные поля в массив, установил для различных полей значение по умолчанию. Затем я изменил модель ng на новое поле в массиве. После этого я смог отсортировать данные, и значения по умолчанию остались связанными с соответствующими строками.

Другие вопросы по тегам