使用angularJS将动态列绑定到表
Bind dynamic columns to a table using angularJS
我正在从外部服务获取一些数据,并试图将其显示在表上。问题是,我从服务中获得的数据将是动态列,有时会有5列,另一次是8列。我不知道我该如何处理这件事。我认为使用像ng网格这样的东西并不是一个好的解决方案,因为只有10行可以显示。如果我使用任何外部解决方案,这将是一个开销。有什么角度的方法可以做到这一点吗?如果不是的话,这个小数据的最佳选择是什么。
注意:列名也将是动态的我的代码
<div ng-app='myApp' ng-controller="MainCtrl">
<div ng-repeat="prdElement in packageElement track by $index" class="package-grid">
<table class="hovertable">
<thead>
<tr>
<th>Line #</th>
<th>Quantity in Plt</th>
<th>Allready Packed</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="data in prdElement.Data" ng-init="data.newquantity = 0">
<td>{{data.itemId}}</td>
<td>
{{data.quantity}}
</td>
<td>{{data.packed}}</td>
</tr>
</tbody>
</table>
</div>
angular.module('myApp', []).controller('MainCtrl', function ($scope) {
var counter = 0;
$scope.packageElement = [{
name: counter,
show: true,
Data: [{
name: 'item 1',
itemId: '284307',
quantity: '100',
packed: 0
}, {
name: 'item 2',
itemId: '284308',
quantity: '200',
packed: 0
}]
}];
});
所有数据项的列数是否相同?如果是的话,我想你可以这样做。
1.在您的作用域上定义一个函数,为您提供对象键:
$scope.keys = function(obj) {
var key;
var keys = [];
for (key in obj) {
if (key === "$$hashKey") break; //angular adds new keys to the object
if (obj.hasOwnProperty(key)) keys.push(key);
}
return keys;
}
2.在表头上使用中继器(如果对象可以具有不同的属性,则需要找到属性/列数最多的对象)
<th ng-repeat="key in keys( prdElement.Data[0] )">{{key}}</th>
3.在表格单元格上使用中继器
<td ng-repeat="key in keys( prdElement.Data[0] )">{{ data[key] }}</td>
相关文章:
- 如何在动态创建的节点上绑定函数
- 有没有比在app.js上绑定模块名称更好的方法来动态加载视图模型和视图以显示模态
- 将值动态绑定到jquery中的切换按钮
- Angularjs在js中绑定动态表单构建
- 取消绑定动态创建的元素的单击事件
- 如何绑定动态表单
- 使用Angular数据绑定动态舍入总和
- 如何使用ng模型绑定动态复选框值
- 绑定动态元素的简单方法,无需调用函数jquery
- famo.Us /js:绑定动态数据,点击事件发送数据
- 如何在高图工具提示中绑定动态数据
- 从API绑定动态数据到FlipView控件
- 绑定/动态加载事件的动态HTML不工作
- Angular的$compile / $controller没有绑定动态HTML的作用域
- 解除绑定动态绑定的XBL的动态方式
- 与asp.net MVC绑定动态选择列表
- 在jquery中使用on绑定动态生成元素的多个事件处理程序对
- 选择不使用angular 2绑定动态更新的选项
- 在angular中调用$compile绑定动态HTML后的ng-repeat问题
- 使用 vue.js 绑定动态表单值