Czy można używać D3 z Elm przy użyciu portów? Próbuję Elm, ale nie mogę znaleźć żadnych przykładów użycia Elm z D3 bez otoki API. Problemem, który napotkam, jest to, że wrapper i widły nie działają z wersją 0.18. Widzę też wiele stwierdzeń, które sugerują, że budowanie API wokół API JavaScript jest złą praktyką i że zamiast tego powinieneś używać portów. Nie mogę znaleźć żadnych przykładów tego z D3. Znalazłem this example, ale część D3 została zrobiona w prostym javascript, który nie pasuje.Używanie D3 z Elmem
Prawdopodobnie jestem zbyt agresywny, biorąc na siebie D3 tuż przy kiju z Wiązem, ale to naprawdę chcę z nim zrobić. Jeśli nie jest możliwe używanie D3 z Elmem, prawdopodobnie nie będę się tym przejmował. Czy jest jakiś podstawowy problem z tego rodzaju interakcją, czy jest to po prostu brak zainteresowania D3 w społeczności Elma, czy też po prostu coś mi brakuje?
Na przykład, weźmy ten kod zgrane z przykładu bl.ocks powyżej:
var t = d3.transition().duration(750);
var g = d3.select("svg g")
// JOIN new data with old elements.
var text = g.selectAll("text")
.data(data, function(d) { return d; });
// ENTER new elements present in new data.
text.enter().append("text")
.attr("class", "enter")
.attr("dy", ".35em")
.attr("y", -60)
.attr("x", function(d, i) { return i * 24; })
.style("fill-opacity", 1e-6)
.text(function(d) { return d; })
.transition(t)
.attr("y", 0)
.style("fill-opacity", 1);
Czy istnieje tłumaczenie proste w Elm dla tego typu rzeczy?
Oto przykład pracy z portów i dużą bibliotekę JS (Google Maps) http: //simonh1000.github .io/2016/12/elm-ports-google-maps/To może ci pomóc –
@SimonH Dzięki za twoją pomoc. Patrzyłem na pewne rzeczy, ale tam, gdzie walczę, jest to, że d3 używa wielu odniesień do metod. Musisz przekazać mu funkcje i funkcje wywołania, które zwracają funkcje (które są również obiektami). Nie mam pojęcia, jak to zrobić w Elm, więc właśnie tam miałem nadzieję znaleźć działający (prosty) przykład. – JimmyJames
Czy możesz podać przykład kodu, który musisz przekazać przez port. Rozwiń pytanie, aby pokazać, do jakiej funkcjonalności chcesz uzyskać dostęp w D3 z Elm –