From cf12c00fa1445efbb033c88c5d89090a059b7608 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Gerardy Date: Tue, 6 Dec 2016 21:34:24 +0100 Subject: [PATCH] [router] don't mutate RouteResolvers, move a branch out of redraw --- api/router.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/api/router.js b/api/router.js index 1eace6b0..d1452782 100644 --- a/api/router.js +++ b/api/router.js @@ -8,16 +8,16 @@ module.exports = function($window, redrawService) { var routeService = coreRouter($window) var identity = function(v) {return v} - var resolver, component, attrs, currentPath, resolve + var render, component, attrs, currentPath, resolve var route = function(root, defaultRoute, routes) { if (root == null) throw new Error("Ensure the DOM element that was passed to `m.route` is not undefined") var update = function(routeResolver, comp, params, path) { - resolver = routeResolver, component = comp, attrs = params, currentPath = path, resolve = null - resolver.render = routeResolver.render || identity - render() + component = comp || "div", attrs = params, currentPath = path, resolve = null + render = (routeResolver.render || identity).bind(routeResolver) + run() } - var render = function() { - if (resolver != null) redrawService.render(root, resolver.render(Vnode(component || "div", attrs.key, attrs))) + var run = function() { + if (render != null) redrawService.render(root, render(Vnode(component, attrs.key, attrs))) } routeService.defineRoutes(routes, function(payload, params, path) { if (payload.view) update({}, payload, params, path) @@ -38,7 +38,7 @@ module.exports = function($window, redrawService) { }, function() { routeService.setPath(defaultRoute) }) - redrawService.subscribe(root, render) + redrawService.subscribe(root, run) } route.set = routeService.setPath route.get = function() {return currentPath}