From 834dd0261043db05f3071bcceac510646cb3dca8 Mon Sep 17 00:00:00 2001 From: Pat Cavit Date: Wed, 11 Jan 2017 14:23:42 -0800 Subject: [PATCH 1/3] feat: bring back m.route.params() Because it's annoying only having route params available to the top-level components within a route. --- api/router.js | 4 ++++ api/tests/test-router.js | 21 +++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/api/router.js b/api/router.js index cf406737..c25ac257 100644 --- a/api/router.js +++ b/api/router.js @@ -54,6 +54,10 @@ module.exports = function($window, redrawService) { route.set(href, undefined, undefined) } } + route.params = function(key) { + if(typeof attrs !== "undefined" && typeof key !== "undefined") return attrs[key] + return attrs + } return route } diff --git a/api/tests/test-router.js b/api/tests/test-router.js index 6a281237..f97fc5db 100644 --- a/api/tests/test-router.js +++ b/api/tests/test-router.js @@ -1194,6 +1194,27 @@ o.spec("route", function() { done() }, FRAME_BUDGET * 2) }) + + o("m.route.params is available outside of route handlers", function(done) { + $window.location.href = prefix + "/" + + route(root, "/1", { + "/:id" : { + view : function() { + o(route.params("id")).equals("1") + + return m("div") + } + } + }) + + callAsync(function() { + o(route.params("id")).equals("1") + o(route.params()).deepEquals({id:"1"}) + + done() + }) + }) }) }) }) From 2cdd8a96d1c531aeca66e890621d44374d6b5238 Mon Sep 17 00:00:00 2001 From: Pat Cavit Date: Wed, 11 Jan 2017 14:25:19 -0800 Subject: [PATCH 2/3] tests: undefined until a route has been matched --- api/tests/test-router.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/api/tests/test-router.js b/api/tests/test-router.js index f97fc5db..b3975f21 100644 --- a/api/tests/test-router.js +++ b/api/tests/test-router.js @@ -1208,6 +1208,9 @@ o.spec("route", function() { } }) + o(route.params("id")).equals(undefined); + o(route.params()).deepEquals(undefined); + callAsync(function() { o(route.params("id")).equals("1") o(route.params()).deepEquals({id:"1"}) From d119accb21e3b7f9ffb199e451ec8a3e464df549 Mon Sep 17 00:00:00 2001 From: Pat Cavit Date: Wed, 11 Jan 2017 15:14:29 -0800 Subject: [PATCH 3/3] fix: m.route.param, not m.route.params :sweat: --- api/router.js | 2 +- api/tests/test-router.js | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/api/router.js b/api/router.js index c25ac257..1d267bb8 100644 --- a/api/router.js +++ b/api/router.js @@ -54,7 +54,7 @@ module.exports = function($window, redrawService) { route.set(href, undefined, undefined) } } - route.params = function(key) { + route.param = function(key) { if(typeof attrs !== "undefined" && typeof key !== "undefined") return attrs[key] return attrs } diff --git a/api/tests/test-router.js b/api/tests/test-router.js index b3975f21..8fec9042 100644 --- a/api/tests/test-router.js +++ b/api/tests/test-router.js @@ -1195,25 +1195,25 @@ o.spec("route", function() { }, FRAME_BUDGET * 2) }) - o("m.route.params is available outside of route handlers", function(done) { + o("m.route.param is available outside of route handlers", function(done) { $window.location.href = prefix + "/" route(root, "/1", { "/:id" : { view : function() { - o(route.params("id")).equals("1") + o(route.param("id")).equals("1") return m("div") } } }) - o(route.params("id")).equals(undefined); - o(route.params()).deepEquals(undefined); + o(route.param("id")).equals(undefined); + o(route.param()).deepEquals(undefined); callAsync(function() { - o(route.params("id")).equals("1") - o(route.params()).deepEquals({id:"1"}) + o(route.param("id")).equals("1") + o(route.param()).deepEquals({id:"1"}) done() })