2015-11-24 21 views
0

Я включаю обзоры YOTPO на моем угловом веб-сайте js. Его двухэтапный процесс - 1) Включите их widget.js - я включил это в свой index.html, где также были включены все другие js-файлы. 2) Включите тег div своего виджета на страницу, где должны быть отзывы отображается - я включил это на страницу отдельного продукта, которая является частичным/product.htmlкак обновить данные стороннего виджета в угловых js частичных файлах

Вопрос - Мой сайт - это веб-сайт поиска. Index.html имеет окно поиска, все результаты отображаются там. Когда пользователь нажимает на определенную страницу в результатах, он перенаправляется на определенную страницу продукта (partial/product.html)

Поток пользователя - Предположим, что при поиске я получаю продукты P1, P2, P3 в результатах.

Впервые, если я нажму на P1 и перейду на страницу его продукта, появится обзор YOTPO. Но когда я возвращаюсь к поиску и нажимаю на любой другой результат (даже с новым поисковым запросом и результатами), виджет YOTPO не появляется. Но если я обновляю страницу, она появляется.

Я думаю, что обзоры отображаются при вызове widgets.js (который включен в index.html), и обновление перезагружает его. Но как я могу убедиться, что он перезагружается каждый раз, когда пользователь переходит к странице продукта? Или как этот сценарий обрабатывается в angularJS - я новичок в JS, возможно, у меня отсутствует какая-то концепция здесь.

ответ

0

Я бы рекомендовал посмотреть раздел «Создание директивы, манипулирующей DOM» на этой странице.

Angular Directives

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

+0

Спасибо пользователю2263572 за то, что он был так красиво. Я попытаюсь использовать для этого директиву. Но, как вы сказали, я создаю функцию и вызываю ее после обновления обзора.Проблема, с которой я столкнулась, заключается в том, что обзоры отображаются, когда я обновляю страницу, но не когда я приземлюсь на страницу в первый раз. Я имел какой-то смысл? – user3117709

+0

Не знаете, как настроено ваше приложение, поэтому сложно предоставить больше отзывов. Как вы обрабатываете маршрутизацию в своем приложении? Если вы используете что-то вроде углового ui-router, которое, вероятно, поможет решить эту проблему. Скорее всего, вы просто выполняете код до загрузки вашего представления. – user2263572

0

Эй, я работаю над приложением React/Redux, так что это может быть не то же самое.

Если у вас есть сценарий sitotide yotpo, он должен создать объект, yotpo (если вы выполните console.log (yotpo), вы можете его увидеть). Если вы посмотрите на proto, там есть ряд функций.

Изделия втянуты идентификатором продукта, будь то родительский или детский sku, или, как бы то ни было, у вас есть.

У меня возникла проблема, когда он не обновлял виджет, если бы мы пошли на новый продукт, но если бы я обновился, он бы выглядел правильно.

Вот как я это решил; Я ставлю этот код в функцию, где она повторно рендеринг:

// update Yotpo dynamically 
    window.yotpo.initialized = false; 
    window.yotpo.clean(); 

// there is a widgets array that the widgets are pulling data from; we need to update this 
    for (let i = 0, len = window.yotpo.widgets.length; i < len; i++) { 
    window.yotpo.widgets[i].settings.pid = nextProps.product.id; 
    window.yotpo.widgets[i].settings.main_widget_pid = nextProps.product.id; 
    } 
    setTimeout(() => window.yotpo.initWidgets(), 500); 

я не уверен, если это фиксирует конкретный вопрос, но надеюсь, он может по крайней мере момент вы в правильном направлении.

Для вас вам просто нужно запустить window.yotpo.initWidgets(), когда этот div будет повторно отображаться.

Смежные вопросы