Meteor Router.go() не перенаправляет, но работает в консоли Chrome

Метеор Router.go() не работает. Он просто мигает новым URL-адресом на несколько миллисекунд в браузере, и страница не переключается.

Извините, я не могу найти никакой подсказки, как это происходит с проводной связью ..!

Template.Post.events({ 
'click a': function() { 
    Router.go('mainPage');  
});

Router.route('/', {
  name: 'mainPage',
  template: 'mainPage'
});

Обновление: я ввожу Router.go('mainPage'); в консоли Chrome. Он работает и возвращает undefined.


person Denly    schedule 25.05.2015    source источник


Ответы (4)


Чтобы избежать этого жалкого ужасного опыта для всех! Позвольте мне опубликовать свое решение и ответить себе:

Когда Router.go() перенаправляет URL-адрес, URL-адрес также мгновенно перенаправляется на href="#" или href="". Таким образом, он отключает форму перенаправления Router.go().

Чтобы решить эту проблему, просто НЕ ставьте тег href="" . Также вы можете поставить этот css: a:hover { cursor:pointer; }

чтобы показать, что тег действительно кликабельный.

person Denly    schedule 27.07.2015
comment
Спасибо! Это сэкономило мне столько времени! - person hlx; 22.06.2016

Вы можете избежать удаления href, добавив следующую строку вверху вашего события event.preventDefault();, которая останавливает выполнение любых дополнительных всплывающих событий, таких как щелчок по href:

"click #aLinkId":function(event, template){ event.preventDefault(); Router.go('/newLocation'); }

person Philip Pryde    schedule 19.05.2016

У меня тоже была эта проблема, обернуть ее в Meteor.setTimeout было единственным способом заставить ее работать.

'click a': function() { 
    Meteor.setTimeout(function(){ Router.go('mainPage'); }, 10); 
}
person Marius Darila    schedule 26.05.2015
comment
это удивительно ... но вы выяснили, почему происходит эта проводная штука? - person Denly; 01.06.2015
comment
Кажется, есть проблема с <a>, когда он имеет атрибут href. Нужно указать e.preventDefault(), смотрите здесь github.com/iron-meteor/iron- маршрутизатор/проблемы/1038 - person Marius Darila; 01.06.2015
comment
О, круто!!! Вот и все!! После удаления href в ‹a› Router.go работает!! Это ужасный баг! - person Denly; 28.06.2015

Можем ли мы увидеть ваши определения маршрутизатора?

По крайней мере, настройте один маршрут:

Router.route('/mainPage', {
    template: 'mainPage'
});

Документацию можно найти здесь: https://github.com/iron-meteor/iron-router/blob/devel/Guide.md

person Fullhdpixel    schedule 25.05.2015
comment
Я прочитал это. Я просто не могу понять, почему это не работает... Я ввожу Router.go('mainPage') в консоль Chrome, и он отлично работает и возвращает значение undefined. - person Denly; 26.05.2015
comment
Насколько я вижу, ваш синтаксис для событий неверен (Template.Post.events({})). - person Fullhdpixel; 26.05.2015
comment
Если вы можете воспроизвести ошибку, я могу рассмотреть ее поближе. - person Fullhdpixel; 26.05.2015