Don't overwrite the options object when redirecting from onmatch with m.route.set, fix #1857

This commit is contained in:
Pierre-Yves Gérardy 2017-07-05 23:58:01 +02:00
parent 9b947f41f0
commit a867754d6a
2 changed files with 6 additions and 2 deletions

View file

@ -39,7 +39,10 @@ module.exports = function($window, redrawService) {
redrawService.subscribe(root, run) redrawService.subscribe(root, run)
} }
route.set = function(path, data, options) { route.set = function(path, data, options) {
if (lastUpdate != null) options = {replace: true} if (lastUpdate != null) {
options = options || {}
options.replace = true
}
lastUpdate = null lastUpdate = null
routeService.setPath(path, data, options) routeService.setPath(path, data, options)
} }

View file

@ -665,7 +665,7 @@ o.spec("route", function() {
route(root, "/a", { route(root, "/a", {
"/a" : { "/a" : {
onmatch: function() { onmatch: function() {
route.set("/b") route.set("/b", {}, {state: {a: 5}})
}, },
render: render render: render
}, },
@ -684,6 +684,7 @@ o.spec("route", function() {
o(view.callCount).equals(1) o(view.callCount).equals(1)
o(root.childNodes.length).equals(1) o(root.childNodes.length).equals(1)
o(root.firstChild.nodeName).equals("DIV") o(root.firstChild.nodeName).equals("DIV")
o($window.history.state).deepEquals({a: 5})
done() done()
}) })