2012-10-09 37 views
47

Tôi không thể hiểu cách d3.call() hoạt động như thế nào và khi nào và ở đâu để sử dụng. Here là liên kết hướng dẫn mà tôi đang cố gắng hoàn thành.Chức năng gọi thư viện Javascript d3

Ai đó có thể xin giải thích cụ thể những gì tác phẩm này được làm

var xAxis = d3.svg.axis() 
       .scale(xScale) 
       .orient("bottom"); 

svg.append("g").call(xAxis); 
+0

liên kết mà bạn cung cấp giải thích những gì 'gọi()' không – Ibu

+9

Yea, nhưng tôi vẫn không thể có được những gì svg.append ("g") .call (xAxis); đang làm :( – Andy897

+1

xem https://github.com/d3/d3-selection/blob/master/README.md#selection_call –

Trả lời

75

tôi nghĩ thủ thuật ở đây là phải hiểu rằng Xaxis là một chức năng mà tạo ra một loạt các yếu tố SVG. Trong thực tế, nó là hàm trả về bởi d3.svg.axis(). Các hàm tỷ lệ và định hướng chỉ là một phần của cú pháp chuỗi (đọc thêm ở đây: http://alignedleft.com/tutorials/d3/chaining-methods/).

Vì vậy, svg.append("g") nối thêm phần tử nhóm SVG vào svg và trả về tham chiếu đến chính nó dưới dạng một lựa chọn (cú pháp chuỗi giống nhau tại nơi làm việc tại đây). Khi bạn sử dụng call trên lựa chọn, bạn đang gọi hàm có tên xAxis trên các phần tử của vùng chọn g. Trong trường hợp này, bạn đang chạy hàm trục, xAxis, trên nhóm mới được tạo và nối thêm, g.

Nếu điều đó vẫn không có ý nghĩa, cú pháp trên là tương đương với:

xAxis(svg.append("g")); 

hay:

d3.svg.axis() 
     .scale(xScale) 
     .orient("bottom")(svg.append("g")); 
+0

cách chỉnh sửa phần tử G của svg.axis()? Tôi có các nhãn bị chảy máu vào nhau và tôi muốn áp dụng một biến đổi cho họ.Nhưng tôi dường như không thể truy cập vào các yếu tố đó – CQM

+0

Kiểm tra câu trả lời ở đây http://stackoverflow.com/questions/12825630/assign-ids-to-individual-axis- text-elements/12849772 # 12849772 Sau khi bạn đã chọn văn bản hoặc các yếu tố đánh dấu, bạn sẽ có thể áp dụng các biến đổi nếu bạn muốn – Superboggly

+0

Có sự khác biệt nào khi thực hiện một hay một cách khác để gọi xAxis? – st4rgut

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