创建多个表时,智能表搜索无效

时间:2016-04-23 01:37:04

标签: angularjs smart-table

这就是我在做的事情。 我调用rest api,以这种格式返回响应

“metalanguages”:{         “1”:{             “id”:1,             “名字”:“阿布哈兹”         },         “2”:{             “id”:2,             “名字”:“阿法尔”         }       },     “制造商”:{         “-1”:{             “id”: - 1,             “名字”:“全部”         },         “1”:{             “id”:1,             “名字”:“RIM”         },         “2”:{             “id”:2,             “名字”:“惠普”         }     }

这基本上是字符串和地图的映射。 我现在必须创建n个表,其中n是原始地图的键数,在每个表中我必须显示数据,这将是内部地图的值(“id”:2,             “名称”:“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];

    };

有人可以帮忙吗?

1 个答案:

答案 0 :(得分: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来创建所需的所有表格,点击列标题现在可以正确排序。

这是demo