2013-04-16 11 views
5

D3 documentation mówi:scalanie `enter` selektyny do` update` wyborów

Wybór wejść wnika do wyboru aktualizacji podczas dołączania lub wstawić. Takie podejście zmniejsza duplikację kodu między aktualizacją typu "enter" a aktualizacją . Zamiast stosować operatorów do osobnego wyboru i wprowadzić oddzielnie, można teraz zastosować je do wyboru aktualizacji po wprowadzeniu węzłów. W rzadkich przypadkach, gdy chcesz uruchamiać operatorów tylko na węzłach aktualizacji, możesz uruchomić je na etapie aktualizacji przed wprowadzeniem nowych węzłów.

Nie rozumiem znaczenia wyrażenia merge into w pierwszym zdaniu. Czy ktoś może to wyjaśnić? (Być może brakuje mi połączenie z jakimś standardowej terminologii baz danych?)

Odpowiedz

4

Oznacza to, że po tym, jak zastosować operację append lub insert do wyboru enter, jej elementy będą częścią zaznaczenia update. Oznacza to, że zwiększasz rozmiar zaznaczenia update. Celem tego jest, jak mówi dokumentacja, ograniczenie duplikowania kodu. Po dodaniu nowego elementu należy ustawić różne atrybuty (np. Rozmiar, kolor, położenie). Te same atrybuty muszą być ustawione dla elementów, które są aktualizowane w wielu przypadkach i można użyć tego samego kodu.

Równowartość w bazie będzie wybór wierszy z różnych tabel (enter i update), a następnie stosując jakąś operację wierszy wybranych z enter, aby dodać je do update. Ta analogia nie działa całkowicie, ale może pomóc ci zrozumieć, co się dzieje.

+0

Ale 'enter' nie zwraca zestawu' update', prawda? Więc jeśli będę łączyć łańcuch w następujący sposób: 'd3.select (" body "). SelectAll (" p ") data (dataset) .enter(). Append (" p ") .text (function (d) {return d; }); 'Pracuję tylko nad zestawem' enter'? – max

+0

Tak. Nadal musisz zapisać wybór aktualizacji, jeśli chcesz działać na tym. –

+1

Nie dostałem tego, dopóki nie zobaczyłem twojej odpowiedzi, i edytowałem wiki dokumentów, aby spróbować je wyjaśnić. Nie mogę zagwarantować, że zmiany się utrzymają, ale próbowałem. – mgold