Динамически загружать изображение в функцию javascript

Я использую подключаемый модуль для просмотра фотографий Javascript (здесь->http://www.photoswipe.com/). Я хочу динамически обновлять фотографии, к которым подключен штекер, когда пользователь просматривает изображения.

У меня есть объект Javascript (я использую фреймворк Joose), который отвечает за обновление его свойств на основе результата ajax-вызова php-скрипта, который анализирует элементы изображения.

Вот мой код:

<script>
    (function(window, PhotoSwipe){

        domInjector = new DOMInjector();
        domInjector.init();

        document.addEventListener('DOMContentLoaded', function(){

            var options = {
                 preventHide: true,
                 getImageSource: function(obj)
                 {
                    return obj.url;
                 },

                 getImageCaption: function(obj)
                 {
                    return obj.caption;
                 }
            },

            instance = PhotoSwipe.attach(
            [
                domInjector.output
            ], 

            options 

            );

            instance.show(0);

    }, false);


}(window, window.Code.PhotoSwipe));

domInjector.output должен выглядеть примерно так -> { url: '" + this.masterObject.elementArray[1].imageLink + "', заголовок: 'Изображение 001'}

где this.masterObject.elementArray[1].imageLink — это URL-адрес изображения.

Но... поскольку функция ajax требует конечного времени для завершения, domInjector.output пуст в течение нескольких секунд, а подключаемый модуль смахивания изображения не имеет элементов!

Остальная часть моего кода хороша, все работает нормально. Я просто не знаю, как я могу внедрить обновленный domInjector.output после завершения функции ajax?

Извините, это очень сложно объяснить. Любая помощь была бы отличной.


person Adam Waite    schedule 09.05.2012    source источник
comment
я могу что-то сделать с прослушивателем событий?   -  person Adam Waite    schedule 10.05.2012


Ответы (1)


Вместо создания экземпляра плагина PhotoSwipe в обработчике события document.DOMContentLoaded, я думаю, вам нужно сделать это в обработчике события, которое вы запускаете из класса DOMInjector после успешного возврата вашего вызова Ajax. Вы также можете рассмотреть возможность передачи функции обратного вызова в качестве параметра вашему классу DOMInjector и выполнения ее при возврате вызова Ajax. В любом случае выходные данные этого вызова будут доступны вам при создании экземпляра PhotoSwipe.

person net.uk.sweet    schedule 09.05.2012
comment
хороший план, я могу просто сделать это, вызвав обычную функцию, как вы думаете? Я пойду сегодня вечером, когда буду дома - person Adam Waite; 10.05.2012
comment
Вы можете передать функцию обратного вызова в свой класс DOMInjector, который будет выполняться при возврате вызова Ajax, и создать в нем экземпляр вашего плагина. - person net.uk.sweet; 10.05.2012
comment
Хорошая новость Адам! Рад, что ты разобрался. - person net.uk.sweet; 11.05.2012