Bueno, aquí va mi solución, la verdad batallé con dos cosas:
Donde diablos poner el observer y qué se le tenía que pasar y cómo cambiar la propiedad src y por ende cómo sacar la propiedad data-img.
Ok, primero todo éste código va en el archivo main.js, decidí crear una función createObserver cómo indica en la documentación de MDN, ya que puede ser que requiera poner otro observador después:
function createObserver() {
return new IntersectionObserver((elements) => {
elements.forEach(element => {
if (element.isIntersecting)
element.target.setAttribute(
'src',
element.target.dataset.img
)
})
})
}
//creo el observer,.
let observer = createObserver()
Después en la función createMovies en lugar de cargar la propiedad src, cree una nueva llamada data-img:
movieImg.setAttribute(
'data-img',
'https://image.tmdb.org/t/p/w300/' + movie.poster_path
)
En esa misma función, al crear el elemento de Imagen, lo meto al observer:
movieContainer.appendChild(movieImg)
container.appendChild(movieContainer)
observer.observe(movieImg)
y en el callback pregunto si lo estoy viendo con la propiedad “isIntersecting”. Si ésto es cierto, accedo al elemento con element.target y de ahí a la propiedad data-img con el “dataset.img”. Como se ve, todo lo que creemos con data-algo va a ir en el dataset.algo. Si quieren saber más, aquí..
Espero que mi solución sea parecida a la que veré en unos minutos. debo decir que me tardé bastante y si el profe tiene una solución mas sencilla dejo de estudiar por hoy.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?