Настройка UI-Select значения по умолчанию в смарт-таблице

Настройка UI-Select значения по умолчанию в смарт-таблице

У меня есть веб-проект на основе Angular, в котором я столкнулся с проблемой. Я загружаю данные в смарт-таблицу. В определении смарт-таблицы у меня есть столбец, определенный как пользовательский интерфейс (выпадающий список). Моя проблема заключается в том, что я загружаю данные строки. Я не могу заставить 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. используется опция пользовательского интерфейса 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. Rebuild the dG array into include C4-id and C4Name data
  6. used rebuild dG array as data for attempts 1, 2, 3
  7. in ui-select ng-selected similare to attempts 1, 2, 3

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

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

Буду признателен за любую помощь в решении этого вопроса.


person Anthony S    schedule 04.10.2016    source источник


Ответы (1)


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

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

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

person Anthony S    schedule 05.10.2016
comment
это разрешение работает только тогда, когда умная таблица не выполняет никаких дополнительных функций, таких как фильтрация или сортировка. - person Anthony S; 06.10.2016