Nativescript- angular кеш изображений для массива - PullRequest
0 голосов
/ 27 мая 2020

поэтому я пытаюсь поместить 15 изображений в кеш изображений, чтобы их не приходилось перезагружать каждый раз при перезагрузке страницы. Я использую кеш изображений.

Я думаю, что я ошибаюсь в том, что использую item.photoUrl в качестве модели просмотра и источника фотографии (хотя это то, что мне нужно). Я думаю, что он должен сделать (и хочу, чтобы он это сделал), это заменить 'item.photoUrl' заполнителем, а затем, когда изображение загружено, снова замените его фактическим изображением

Это код:

// items get passed into this function
putItemsInCache(items) {
    const cache = new Cache();
    cache.placeholder = fromFile("~/app/_assets/logo-.png");
    cache.maxRequests = 15;

    items.forEach((item) => {

        const viewmodel = item.photoUrl;

        item.set("imageSource", cache.placeholder);
        // console.log(item);

        cache.enableDownload();

        let cachedImageSource;
        const url = item.photoUrl;
        // Try to read the image from the cache
        const myImage = cache.get(url);

        if (myImage) {
            // If present -- use it.
            cachedImageSource = fromNativeSource(myImage);
            item.photoUrl.set("imageSource", cachedImageSource);
        } else {
            // If not present -- request its download + put it in the cache.
            cache.push({
                key: url,
                url: url,
                completed: (image, key) => {
                    console.log("items cached");
                    if (url === key) {
                        cachedImageSource = fromNativeSource(image);
                        item.photoUrl.set("imageSource", cachedImageSource); // set the downloaded iamge
                    }
                }
            });
        }
    });

}
...