Умный поиск таблиц не работает при создании нескольких таблиц

0

Это то, что я делаю. Я называю rest api, который возвращает ответ в этом формате

"метаязыки": {"1": {"id": 1, "имя": "абхазский"}, "2": {"id": 2, "name": "Afar"}}, "производители": {"-1": {"id": -1, "name": "all"}, "1": {"id": 1, "name": "RIM"}, "2": { "id": 2, "name": "HP"}}

Это в основном карта строк и карты. Теперь мне нужно создать n число таблиц, где n - количество ключей исходной карты, и внутри каждой таблицы я должен показать данные, которые будут значением внутренней карты ("id": 2, "name": "HP")

Я заработал, но поиск не работает. Это мой пример кода

<div ng-repeat="(key,value) in metadataDetails">
<table  st-table="metadataCollection" st-safe-src="metadataDetails" class="table table-striped">
<thead>
   <tr class="style_tr">
   <th st-sort="name">name</th>
   <th st-sort="name">name</th>
   <th st-sort="description">description</th>
   <th st-sort="countryName">countryName</th>
   <th st-sort="carrierName">carrierName</th>
   </tr>
   <tr class="textSearchTr">
   <th colspan="4" class="textSearchTr">
   <input class="freshblue" placeholder="Enter value to search/filter" type="text" ng-model="searchParam.search" />
   </th>
   </tr>
  </thead>
  <tbody>
    <tr ng-repeat="row in getValueMap(key)" ng-show="showRow">
    <td>{{row.id}}</td>
    <td>{{row.name}}</td>
    <td>{{row.description}}</td>
    </tr>
  </tbody>
</table>
</div>

И мой файл js

AuditMetadataService.get({}, function(data) {

        $scope.numRecord = data.length;
        $scope.metadataDetails = data;
        $scope.metadataCollection = [].concat($scope.metadataDetails);
        console.log("Return value :");
        console.log($scope.metadataDetails);
    });

$scope.getValueMap = function(key) {

        console.log(key);
        return $scope.metadataDetails[key];

    };

Может кто-нибудь помочь?

Теги:
smart-table

1 ответ

0
Лучший ответ

Вы можете превратить свой объект карты в массив, получив его ключи и используя функцию Array.prototype.map, вам придется повторить это и для внутренних объектов карты, потому что st-sort ожидает элемент массива, а не значение ключа.

$scope.tables = keys.map(function(key) {
    return Object.keys(data[key]).map(function(k) {
        return data[key][k];
    });
});

Затем вы можете перебирать $scope.tables с помощью ng-repeat для создания всех таблиц, а щелчки заголовков столбцов теперь отсортируют их правильно.

Вот демонстрация.

  • 0
    Спасибо, что решили мою проблему.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню