2016-07-22 9 views
5

Kiedy używam dowolnego makietowego wzorca, takiego jak <span class="pat-moment">2016-07-30T15:10:00</span> w faceted:view (niestandardowy widok dla eea.facetednavigation) wzorzec nie działa wcale, ponieważ treść jest wstrzykiwana z javascript.Używanie makiet w widokach fasetowanych w Plone 5

W https://stackoverflow.com/a/35699974/637399 @ebrehault napisał, że wzory są inicjowane w czasie ładowania i jeśli zmiany DOM i zawiera nowe elementy, trzeba zadzwonić Registry.scan($('#content-core')) gdzie Registry jest pat-registry i #content-core wstrzyknięta część strony.

Jak to zrobić w kontekście eea.facetednavigation (https://github.com/eea/eea.facetednavigation)? Używa systemu zdarzeń (patrz https://github.com/eea/eea.facetednavigation/blob/master/eea/facetednavigation/browser/javascript/view.js). Jak mogę posłuchać jednego z tych wydarzeń, którego potrzebuję i jak mogę je wywołać?

+0

Podejrzewam chcesz użyć MutationObserver obserwować zmiany dokonane przez eea.facetednavigation (przepraszam, nie MSIE <11 Support). https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver dla starszych MSIE, może trzeba użyć PolyFill który używa setInterval sondowanie. – sdupton

Odpowiedz

3

trzeba wiązać przypadku EEA AJAX_QUERY_SUCCESS:

$(Faceted.Events).bind(Faceted.Events.AJAX_QUERY_SUCCESS, function() { 
     Registry.scan($('#content-core')); 
}); 

Uwaga: kiedy powiedział:

i # content-core wstrzyknięta części strony.

to nie jest prawdziwe, to nie jest specjalnie cel wtrysku (swoją drogą nie zawsze jest wtrysk podczas korzystania z wzorców, w samym przypadku wtrysku jest zarządzany przez eea.faceted, który nie jest wzorcem) . Możesz ponownie przeskanować dowolną część DOM, wystarczy upewnić się, że część, którą ponownie skanujesz, zawiera wzory, które chcesz aktywować (na przykład: body).

+0

Dzięki, że działa świetnie! Jestem tak przyzwyczajony, że pytam, że ciągle się zastanawiam, w jaki sposób '' $ (Faceted.Events) 'działa bez importu :-) – pbauer

Powiązane problemy