在此处使用angularjs:
我有一个HTML表,该表的列和可编辑行是动态创建的。用户可以将此详细信息保存在数据库中。
被动态创建时,我将列名称保存为逗号分隔的名称。这些行还保存为每行的逗号分隔值。
例如下面的数据库表:
Id col row comment createdby
1 col1, col2, col3, col4 1,2,3,4 test1 abc
2 col1, col2, col3, col4 5,6,7,8 test2 abc
在详细信息视图用户期间,我要重绘表,如下所示从数据库中获取col和row值
上面的表格在用户界面上看起来如下
col1 col2 col3 col4
1 2 3 4
5 6 7 8
表的代码如下:
function createTable() {
return {
columns: [],
rows: [{}]
}
}
var table = {
columns: [],
rows: [{}]
};
$scope.tables = [table];
$scope.tables.push(createTable());
$scope.targetTable = $scope.tables[0];
从我的api返回的杰森是这样的:
{
colName: "col1, col2, col3, col4
rowValues: "1,2,3,4"
}
{
colName: "col1, col2, col3, col4
rowValues: "5,6,7,8"
}
//and so on we can have more rows
对于列,我这样做。
var colArray = json.colName.split(',');
for (var i = 0; i < colArray.length; i++) {
$scope.targetTable.columns.push({
colName: colJson.col.split(',')[i],
//where colName is the ng-model in the html for table header
});
}
上面的代码工作正常,我可以看到使用所有这些列创建的HTML表
由于行是动态创建的,并且没有行数限制,因此我很难找到将行绑定到此表的解决方案。
我们要添加行
$scope.targetTable.rows.push({});
因此,在我的情况下,如何循环遍历Json并将每个值推送到该行。 例如,像这样,将根据我的json创建前两行:
$scope.targetTable.rows.push({
"0":"1", "1":"2", "2":"3","3":"4"
});
$scope.targetTable.rows.push({
"0":"5", "1":"6", "2":"7","3":"8"
});
答案 0 :(得分:1)
我不确定此解决方案是否会回答您的问题,如果不能,我将尝试根据需要进行更新。
对于单行,我相信此方法将按预期工作:
var rowArray = json.rowValues.split(',');
for (var i = 0; i < rowArray.length; i++) {
var rowObject = {};
json.rowValues.split(',').forEach((elem, index) => {
rowObject[index] = elem;
})
$scope.targetTable.rows.push(rowObject);
}
这将从json.rowValues
中提取一行,其格式类似于11,22,33,44
,并将其转换为与您的行格式({0: "11", 1: "22", 2: "33", 3: "44"}
)相匹配的对象。然后将该对象放入$ scope中的表中。
答案 1 :(得分:0)
您可以尝试类似的方法。
// New data that you will push
newJson = {};
// The data you pulled from server
oldJson = {
colName: "col1, col2, col3, col4",
rowValues: "1,2,3,4",
};
oldJson.rowValues.split(',').map((element, index) => {
newJson[index] = element;
});
// New Json... Expected Output: {0: 1, 1: 2, 2: 3, 3: 4}
$scope.targetTable.rows.push(newJson);
答案 2 :(得分:-1)
我建议使用jQuery。您可以组成表格结构并追加到表格主体,例如
“您的数据”:{colName:“ col1,col2,col3,col4 rowValues: “ 1,2,3,4”} {colName:“ col1,col2,col3,col4 rowValues: “ 5,6,7,8”}
$.getJSON("your-restapi/ or x.php" + function (data) {
$.each(data.yourdata, function() {
$.each(this, function(k, v) {
$('<tr>' +
'<td>' + v.rowValues + '</td>' +
'<td>' + v.colName + '</td>' +
</tr>').appendTo("table-body");
})
});
});