2013-04-16 24 views
5

D3 documentation nói:sáp nhập 'cái enter` selectin vào' Lựa chọn update`

Các lựa chọn kết hợp nhập vào lựa chọn cập nhật khi bạn nối thêm hoặc chèn. Cách tiếp cận này làm giảm sự sao chép mã giữa nhập và cập nhật. Thay vì áp dụng toán tử cho cả hai lần nhập và cập nhật riêng lẻ, bạn có thể áp dụng chúng cho lựa chọn cập nhật sau khi nhập các nút. Trong trường hợp hiếm hoi mà bạn muốn chạy các toán tử chỉ trên các nút cập nhật, bạn có thể chạy chúng trên phần cập nhật trước khi nhập các nút mới.

Tôi không hiểu ý nghĩa của cụm từ merge into trong câu đầu tiên. Ai đó có thể giải thích bit này? (Có lẽ tôi là thiếu một kết nối với một số thuật ngữ cơ sở dữ liệu tiêu chuẩn?)

Trả lời

4

Điều này có nghĩa rằng sau khi bạn đã áp dụng phẫu thuật append hoặc insert đến việc lựa chọn enter, các yếu tố của nó sẽ là một phần của vùng chọn update. Tức là, bạn tăng kích thước của lựa chọn update. Mục đích của điều này là, như tài liệu nói, để giảm trùng lặp mã. Sau khi thêm phần tử mới, các thuộc tính khác nhau phải đặt (ví dụ: kích thước, màu sắc, vị trí). Các thuộc tính giống nhau phải được đặt cho các phần tử được cập nhật trong nhiều trường hợp và có thể sử dụng cùng một mã.

Tương đương cơ sở dữ liệu sẽ chọn hàng từ các bảng khác nhau (enterupdate) và sau đó áp dụng một số thao tác cho các hàng được chọn từ enter để thêm chúng vào update. Sự tương tự này không hoạt động hoàn toàn, nhưng nó có thể giúp bạn hiểu những gì đang xảy ra.

+0

Nhưng 'enter' không trả về tập' update', đúng không? Vì vậy, nếu tôi chuỗi như thế này: 'd3.select (" cơ thể "). SelectAll (" p "). Data (dataset) .enter(). Append (" p "). Text (function (d) {return d; }); 'Tôi chỉ làm việc trên bộ' enter'? – max

+0

Có. Bạn sẽ vẫn phải lưu lựa chọn cập nhật nếu bạn muốn thao tác trên đó. –

+1

Tôi đã không nhận được điều này cho đến khi tôi nhìn thấy câu trả lời của bạn, và chỉnh sửa wiki tài liệu để cố gắng làm cho nó rõ ràng hơn. Không thể đảm bảo những thay đổi sẽ dính, nhưng tôi đã thử. – mgold

Các vấn đề liên quan