Tôi điền vào một tập hợp các trường nhập văn bản hiển thị giá trị của mảng kết hợp bằng cách sử dụng d3js. Người dùng thay đổi một số giá trị đầu vào.d3js chấp nhận/hoàn nguyên giá trị đầu vào
var obj = {a: 'Hello', b: 'World'}
var kk = function(d){return d.key}
var kv = function(d){return d.value}
var upd = function(c){
c.select('div.label').text(kk)
c.select('div.input input').attr("value", kv)
}
var data = d3.entries(obj)
var prop = d3.select("div.container").selectAll("div.prop").data(data, kk)
upd(prop)
var eprop = prop.enter().append("div").attr("class", "prop")
eprop.append("div").attr("class", "label")
eprop.append("div").attr("class", "input").append("input").attr("name", kk)
upd(eprop)
prop.exit().remove()
thực hiện những điều tốt nhất để
a) cập nhật các mảng kết hợp ban đầu từ DOM (theo chiều ngược lại)
b) phục hồi các giá trị DOM để những bản gốc
giải pháp hiện tại của tôi là
là gì a) lặp qua các trường nhập d3.select("div.container").selectAll("div.prop").select('div.input input').each(function(){obj[this.name]=this.value})
b) gán []
làm dữ liệu lựa chọn và sau đó sao lưu dữ liệu ban đầu (Tôi không tìm thấy bất kỳ thứ gì như cập nhật hoặc làm mới lực)
Chỉnh sửa (khái quát)
Trường nhập liệu hiển thị giá trị của mảng kết hợp chỉ là trường hợp đặc biệt, bạn có thể tưởng tượng bố cục d3js được áp dụng trên mô hình tương tác với người dùng.
Nhưng nói chung:
a) chấp nhận các giá trị từ DOM lại dữ liệu nguồn
b) phục hồi các DOM để các nguồn dữ liệu thực tế
Có d3js built-in hỗ trợ hoặc một plugin d3js cho việc này?
Chỉ vì tò mò, 'obj' là gì? –
@CoolBlue nó là một mảng kết hợp, xem mã mã trong câu hỏi. nhưng nếu bạn có một mảng bình thường, bạn có thể bỏ qua nhiệm vụ 'obj [d.key] =' và các dấu ngoặc –