From 92cd0a2a039046804c0dfd16cce43ad53b216050 Mon Sep 17 00:00:00 2001 From: raytiley Date: Wed, 30 Mar 2016 13:51:06 -0700 Subject: [PATCH] [BUGFIX RELEASE] Do not refresh routes on initial transition Refreshing the route heighercy do to query param change on the initial transition is pointless, so now we only call refresh if there is a `currentState`. This fixes #10945 --- packages/ember-routing/lib/system/route.js | 2 +- .../ember/tests/routing/query_params_test.js | 54 +++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/packages/ember-routing/lib/system/route.js b/packages/ember-routing/lib/system/route.js index 5a1384eea04..441ae0f7cd5 100644 --- a/packages/ember-routing/lib/system/route.js +++ b/packages/ember-routing/lib/system/route.js @@ -759,7 +759,7 @@ var Route = EmberObject.extend(ActionHandler, Evented, { var totalChanged = Object.keys(changed).concat(Object.keys(removed)); for (var i = 0, len = totalChanged.length; i < len; ++i) { var qp = qpMap[totalChanged[i]]; - if (qp && get(this._optionsForQueryParam(qp), 'refreshModel')) { + if (qp && get(this._optionsForQueryParam(qp), 'refreshModel') && this.router.currentState) { this.refresh(); } } diff --git a/packages/ember/tests/routing/query_params_test.js b/packages/ember/tests/routing/query_params_test.js index a19eaa35e4a..76b791342bf 100644 --- a/packages/ember/tests/routing/query_params_test.js +++ b/packages/ember/tests/routing/query_params_test.js @@ -378,6 +378,33 @@ if (isEnabled('ember-routing-route-configured-query-params')) { equal(indexModelCount, 2); }); + QUnit.test('refreshModel does not cause a second transition during app boot ', function() { + expect(0); + + App.ApplicationRoute = Route.extend({ + queryParams: { + appomg: { + defaultValue: 'applol' + } + } + }); + + App.IndexRoute = Route.extend({ + queryParams: { + omg: { + defaultValue: 'lol', + refreshModel: true + } + }, + refresh: function() { + ok(false); + } + }); + + startingURL = '/?appomg=hello&omg=world'; + bootApplication(); + }); + QUnit.test('can use refreshModel even w URL changes that remove QPs from address bar when QP configured on route', function() { expect(4); @@ -2438,6 +2465,33 @@ if (isEnabled('ember-routing-route-configured-query-params')) { equal(indexModelCount, 2); }); + QUnit.test('refreshModel does not cause a second transition during app boot ', function() { + expect(0); + App.ApplicationController = Controller.extend({ + queryParams: ['appomg'], + appomg: 'applol' + }); + + App.IndexController = Controller.extend({ + queryParams: ['omg'], + omg: 'lol' + }); + + App.IndexRoute = Route.extend({ + queryParams: { + omg: { + refreshModel: true + } + }, + refresh: function() { + ok(false); + } + }); + + startingURL = '/?appomg=hello&omg=world'; + bootApplication(); + }); + QUnit.test('Use Ember.get to retrieve query params \'refreshModel\' configuration', function() { expect(6); App.ApplicationController = Controller.extend({