Tôi đang sử dụng D3 để vẽ bảng HTML và mọi thứ hoạt động tốt khi nhập. Khi tôi thêm một mục mới vào bộ sưu tập dữ liệu của tôi, nó sẽ thêm mục mới vào bảng một cách chính xác.Vẽ bảng HTML qua D3 không cập nhật dữ liệu hiện có
Vấn đề là bất cứ khi nào tôi cập nhật một đối tượng hiện có (một đối tượng trong bộ sưu tập backgroundJobs bên dưới) trong bộ sưu tập. Khi tôi chạy lại mã D3 để đồng bộ hóa bảng, nó không hoạt động. Chẳng có gì xảy ra.
Dưới đây là các mã:
var visibleColumns = ['Name', 'Start', 'End', 'Status', 'Metadata', 'Errors'];
var table = d3.select('#jobs').append('table');
var thead = table.append('thead');
var tbody = table.append('tbody');
thead.append("tr")
.selectAll("th")
.data(visibleColumns)
.enter()
.append("th")
.text(function (column) { return column; });
function tick() {
var rows = tbody.selectAll("tr")
.data(backgroundJobs, function(d) {
return d.name;
})
.enter()
.append("tr");
var cells = rows.selectAll("td")
.data(function(row) {
return [{column: 'Name', value: row.name},
{column: 'Start', value: row.startedTimestamp},
{column: 'End', value: row.endedTimestamp},
{column: 'Status', value: row.isRunning},
{column: 'Metadata', value: ''},
{column: 'Errors', value: row.errorMsg}];
})
.enter()
.append("td")
.text(function(d) { return d.value; });
}
setInterval(tick, 500);
tại sao bao gồm các cuộc gọi 'rows.order();'? – manu08
Vì vậy, thứ tự các hàng trong bảng khớp với thứ tự công việc trong mảng backgroundJobs. Nếu không phân loại rõ ràng tất cả các công việc mới ('mới' về tham gia dữ liệu - những thứ tạo thành lựa chọn 'nhập') được nối vào cuối bảng. – amakhrov