2016-05-18 7 views
4

Я нашел документацию FlowRouter для FlowRouter.reload(), но мне не удалось найти конкретные примеры кода и не могу заставить его работать.Как использовать Meteor FlowRouter.reload()

В моем приложении у меня есть шаблон, который использует некоторые умные javascript (Isotope) для изменения элементов при изменении размера страницы. Иногда пользователь перемещается, изменяет размер окна браузера, а затем возвращается - на перепутанную страницу, которая должна обновляться и перерисовываться, чтобы переместить элементы для окна с размерами.

Это мой маршрут. Как я могу использовать FlowRouter.reload(), чтобы перезагрузить/обновить только область шаблонов «работа»? В качестве альтернативы, как я могу использовать его для перезагрузки/обновления всего шаблона макета или окна?

FlowRouter.route('/work', { 
    action: function() { 
    BlazeLayout.render('body-static', { 
     content: 'work', 
    }); 
    }, 
}); 
+0

Не можете ли вы просто выполнить '$ grid.isotope ('layout')' когда размер изменяется или когда документ снова становится активным? –

+0

Я пробовал это, но я хотел сделать это на triggerEnter FlowRouter, и эта функция не запускает jQuery. Кроме того, я хотел бы знать, как использовать FlowRouter.reload(). :) – Deborah

+1

Вы правы, что документы довольно разрежены для этой функции! –

ответ

3

В случае, если кто-то еще сюда приезжает, это было решено с большой помощью Хью на форуме Метеор.

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

Вот как это получилось.

// handle refreshing div on every load of div 
let fireReload = false; 

function reloadCheck(context, redirect, stop) { 
    if (fireReload) { 
    console.log('Hugh is Awesome and also reloading screen...'); 
    FlowRouter.reload(); 
    stop(); 
    } 
} 

function routeCleanup() { 
    fireReload = !fireReload; 
} 

FlowRouter.route('/work', { 
    action: function() { 
     BlazeLayout.render('body-static', { 
      content: 'work', 
     }); 
    }, 
    triggersEnter: [reloadCheck], 
    triggersExit: [routeCleanup] 
}); 
Смежные вопросы