2014-09-10 3 views
0

У меня возникла проблема с отладкой onAfterAction, которую я не хочу запускать. Это происходит, когда я нажимаю определенный div. Router.go не вызывается (проверен с debugger; в коде маршрутизатора), и URL-адрес не изменяется. Я не могу найти что-либо в обработчиках кликов, что приведет к изменению маршрута. onAfterAction происходит от недействительности DEPS:Что вызывает onAfterAction в IronRouter, кроме изменения маршрута?

Router.configure.onAfterAction (routes.coffee:5) 
RouteController.runHooks (route_controller.js:155) 
(anonymous function) (route_controller.js:291) 
RouteController.runHooks (route_controller.js:158) 
(anonymous function) (route_controller.js:283) 
Deps.Computation._compute (deps.js:196) 
Deps.Computation._recompute (deps.js:210) 
Deps.flush (deps.js:304) 

ответ

0

Нажатие ДИВ вызвал документ пользователя для изменения. Был глобальный onBeforeAction, который проверял, был ли пользователь зарегистрирован (if Meteor.user()), который является реактивным и запускает повтор action и onAfterAction. Я изменил его на if Meteor.userId(), который не был признан недействительным при обновлении пользовательского документа.

1

Возможно у вас есть некоторый реактивный источник данных в onAfterAction (cursor, Session объект). Он будет повторяться каждый раз, когда будет изменен источник реактивной информации.

Вы можете запретить это поведение, обернув функцию в onAfterAction:

Tracker.nonreactive(function(){}) 
+0

Спасибо, попробовал, но проблема остается. Любые предложения по дальнейшему диагнозу? – Loren

+0

Показать свой код, на котором вы указали onAfterAction –

+0

@KubaWyrobek Я пробовал ваш подход, но это не сработало для меня. Я использую Tracker.afterFlush (function() {}). Я также изменил Meteor.user() на Meteor.userId(). Просмотр загрузки, но URL-адрес не очищается. – Shrinath

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

  • Нет связанных вопросов^_^