I może być czegoś brakuje, ale wydaje się, że Meteor jest „magia” kręci się wokół wiązania danych do elementów DOM i aktualizacja tekstu i fragmenty HTML za pośrednictwem kierownicy: http://docs.meteor.com/#reactivityMeteor - automatyczne aktualizowanie kanwy z subskrybowanymi danymi?
To jest wielki, jednak, kiedy próbuje pisać aplikacja meteor, który wyświetla dane żyć w < płótnie > elementu, nie mogę dowiedzieć się „meteor drogę”, aby zaktualizować moje płótno gdy żywe zmiany danych, ponieważ płótno jest wypełniana za pomocą kodu JS jak:
var g = canvas.getContext('2d')
g.fillRect(x, y, w, h)
a nie tekst oparty na danych w szablonie HTML.
Próbuję narysować na płótnie przy użyciu danych z Meteor.Collection.
Moja jedyna myśl polegała na umieszczeniu kodu JS na rysunku w szablonie HTML w znaczniku skryptu zapełnionym przez wariacje kierownicy, ale wydaje się to błędne, ponieważ zdarzenia meteorytów i kod wiążący dane to już JS po stronie klienta.
Czy jest jakiś sposób nasłuchiwania zmian danych na żywo, które powodują rysowanie na płótnie przez JS zamiast elementów HTML/tekstu?
Proszę dać mi znać, jeśli mogę wyjaśnić kwestię w jakiś sposób
Aktualizacja: poniżej Toma odpowiedź mnie zauważy Meteor.deps, które wyglądają, aby umożliwić wykonanie dowolnego kodu w kontekście reaktywnego: http://docs.meteor.com/#on_invalidate
Wypróbuję to i zaktualizuję tutaj, jeśli zadziała.
I Nie jestem pewien, czy to właśnie masz na myśli przez "osadzone ... w tagu skryptu". Obecnie robię coś w rodzaju umieszczania {{drawCanvas}} w szablonie zawierającym moje płótno, i robię cały rysunek wewnątrz funkcji, która jest częścią Template.canvas.helper o nazwie "drawCanvas", ta funkcja nic nie zwraca, więc nic nie dostaje renderowane, ale jest wykonywane, aby zaktualizować płótno. Czy to już próbowałeś? Template.name.helper jest automatycznie reaktywny, tak długo, jak długo zależy od ReactiveDict lub jakiegoś modelu, który będzie aktualizowany zgodnie ze zmianami. –
Co mam na myśli przez ten komentarz, to dynamiczne generowanie kodu JS jako ciągu w szablonie (który jest oczywiście dziwaczne). Moja odpowiedź poniżej wydawała się być "poprawnym" sposobem z Meteorem – 7zark7
, który jest rzeczywiście absurdalny! Ale czy moja metoda wygląda dobrze? Pomysł polega właśnie na użyciu niewidzialnego {{drawCanvas}}, które nie robi nic, co zostaje ponownie uruchomione za każdym razem, gdy zmieniają się niektóre reaktywne dane (tym samym ponownie rysując płótno). –