Ich habe an einem Scrollspy-Modul für Angularjs gearbeitet. Ich bin auf das Problem gestoßen, wo, wenn die Seite mit dynamischem Inhalt beschäftigt ist, die scrollspy Daten (Elementpositionen) schnell veraltet werden. Wie ist der angulare Umgang mit solchen Fragen?Angularjs-Direktiven bei Änderungen an DOM-Attributwerten
Sollte irgendeine Direktive, die eine DOM-Manipulation durchführt, ein Ereignis sein, nach dem das scrollspy-Modul Ausschau hält - um seine Positionsdaten umzuformen?
Sollte das Scrollspy-Modul alle x Sekunden auf eine Änderung in scrollHeight mit $timeout
überprüfen?
Oder noch besser, gibt es eine Möglichkeit zum Binden und Überwachen von DOM-Attributwertänderungen (Attribute wie offsetTop
, offsetHeight
, scrollHeight
, nicht Datenattribute)?
Update: Added code base to GitHub
Die Einschränkung anderer Richtlinien, Ereignisse auszulösen, würde wahrscheinlich schnell unhandlich werden und Ihr Modul unfreundlich machen. Es gibt leider kein Event für Änderungen an der Helligkeit der Elemente, daher befürchte ich, dass ein Polling $ timeout impl wahrscheinlich der beste Kandidat ist. Zumindest ist es leicht mit $ timeout.flush() zu testen. – SonOfNun
Als Devil Advocates hier, aber was wäre, wenn Elementhöhen geändert würden, aber der gesamte 'scrollHeight' nicht ... Plötzlich musst du alles überprüfen – Patrick