Использование asn угловой смарт-таблицы со сложными объектами

#json #angularjs #smart-table

#json #angularjs #смарт-таблица

Вопрос:

У меня есть коллекция данных, которая выглядит следующим образом:

 [{"disposition":    {"dispositionId":1,"name":"smdnfgn","code":"jkkhkl;hklhlkjhlhkj","description":"DM_Description 1","sortIndex":1,"status":"DM_St 1"}},{"disposition":{"dispositionId":2,"name":"DM_Name 2","code":"DM_Code 2;lkfdg;l'ksadfg","description":"DM_Description 2","sortIndex":2,"status":"DM_St 2"}}, . . .]
 

Как вы можете видеть, массив JSON, возвращаемый серверной службой RESTful, представляет собой объекты размещения со сложным объектом (dispositionId, name, . . .) для каждого.

Когда я передаю эту коллекцию в смарт-таблицу, я не получаю ничего, кроме заголовков.

Однако, когда я запускаю метод удаления «расположения» и превращаю его в более простой массив, например:

     [{"dispositionId":1,"name":"smdnfgn","code":"jkkhkl;hklhlkjhlhkj","description":"DM_Description 1","sortIndex":1,"status":"DM_St 1"},{"dispositionId":2,"name":"DM_Name 2","code":"DM_Code 2;lkfdg;l'ksadfg","description":"DM_Description 2","sortIndex":2,"status":"DM_St 2"}, . . .]
 

Все работает нормально. Есть ли способ заставить SMart-Table распознавать стандартную конфигурацию JSON без необходимости редактировать данные после их извлечения? У меня такое чувство, что я что-то упускаю из виду.

Мои за то, что смотрели на таблицы, здесь:

 <div ng-controller="dispositionSmartCtrl">
<hr>
DispoElements
<smart-table class="table table-striped" table-title="DispoElements"
             config="globalConfig" rows=dispoElements columns="columnCollectionDispo">
</smart-table>
{{dispoElements}}<br /><hr><br />
Disposition RowDispositions
<smart-table class="table table-striped" table-title="RowDispositions"
             config="globalConfig" rows=rowDispositions columns="columnCollectionDispo">
</smart-table>
{{rowDispositions}}
 

Единственное отличие заключается в используемых коллекциях, одна из которых является сложным объектом, а другая — ванильным массивом. Я пробовал {{}}, а также выполнял ‘rowCollections.disposition , и первое приводит к полному завершению работы страницы, второе дает мне таблицу только для заголовков.

Ответ №1:

Мне удалось решить эту проблему для себя. То, что казалось царапиной на голове, было скорее «Да!» момент. Причина, по которой казалось, что сложный объект игнорируется, была двоякой. Первая и основная ошибка заключалась в том, что при определении столбцов мне не удалось включить ссылку на объект. Например, у меня было:

 {label: 'Name', map: 'name', isEditable: true}
 

вместо:

 {label: 'Name', map: '***disposition***.name', isEditable: true}
 

Ошибка усугубления заключалась в том, что указанный столбец не соответствовал объекту самого высокого уровня, поэтому в smart-table просто отображались пустые строки. Если бы я вообще не определял столбцы, я бы увидел объект, а не пробел, и это могло бы подсказать мне быстрее.