这就是我在做的事情。 我调用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];
};
有人可以帮忙吗?
答案 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。