From af3f86585453bd0e9d92c521eb5cec761c301bc2 Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Wed, 31 Jul 2013 13:35:47 +0200 Subject: [PATCH] Make routes code more async capable when setting job After changing Ember Data to Ember Model, the default behavior is to not return promise by default from `find` call. This is better in general for our use case, because we don't block rendering the UI while data loads, but we now have to handle cases where model is not yet loaded in `setupController` --- assets/scripts/app/routes.coffee | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/assets/scripts/app/routes.coffee b/assets/scripts/app/routes.coffee index d6c0f76f..5b4049f4 100644 --- a/assets/scripts/app/routes.coffee +++ b/assets/scripts/app/routes.coffee @@ -203,8 +203,16 @@ Travis.JobRoute = Ember.Route.extend repo = @controllerFor('repo') repo.set('job', model) repo.activate('job') - @controllerFor('build').set('build', model.get('build')) - repo.set('build', model.get('build')) + + # since we're no longer using promises, the setupController resolves right away, + # so we need to wait for build to be loaded + buildObserver = -> + if build = model.get('build') + @controllerFor('build').set('build', build) + repo.set('build', build) + + model.removeObserver('build', buildObserver) + model.addObserver('build', this, buildObserver) Travis.RepoIndexRoute = Ember.Route.extend Travis.SetupLastBuild, setupController: (controller, model) ->