Fix rendering job when moving from index route

The hack which is needed for wrong outlet behaviour renders a template
when outlet is not rendered automatically, but it was done immediately.
Because of that when changing routes from index to job route, sometimes
the hack was kicking in and rendering build instead of job template.
This commit fixes it to check if rendering is needed in "afterRender"
phase on runloop.
This commit is contained in:
Piotr Sarnacki 2013-09-07 17:44:43 +02:00
parent cebe5b1e1c
commit 1a0e378732
2 changed files with 13 additions and 13 deletions

View File

@ -225,10 +225,7 @@ Travis.BuildRoute = Ember.Route.extend
Travis.JobRoute = Ember.Route.extend Travis.JobRoute = Ember.Route.extend
renderTemplate: -> renderTemplate: ->
# TODO: this run.next should not be needed here, I couldn't reproduce it on a clean @render 'job', outlet: 'pane', into: 'repo'
# app, so it's most likely because of some weird thing that we do.
Ember.run.next this, ->
@render 'job', outlet: 'pane', into: 'repo'
serialize: (model, params) -> serialize: (model, params) ->
id = if model.get then model.get('id') else model id = if model.get then model.get('id') else model

View File

@ -15,15 +15,18 @@ Travis.reopen
# in repos/show.hbs is empty when view is rerendered without routing # in repos/show.hbs is empty when view is rerendered without routing
# taking place. Try to render the default outlet in such case # taking place. Try to render the default outlet in such case
# TODO: look into fixing it in more general way # TODO: look into fixing it in more general way
pane = Ember.get('_outlets.pane') Ember.run.schedule('afterRender', this, ->
if @get('controller.repo.isLoaded') && @state == 'inDOM' && pane = Ember.get('_outlets.pane')
@get('controller.repo.lastBuild') && console.log('tab', @get('controller.tab'))
@get('controller.tab') == 'current' && (!pane || pane.state == 'destroyed') if @get('controller.repo.isLoaded') && @state == 'inDOM' &&
view = @get('controller.container').lookup('view:build') @get('controller.repo.lastBuild') &&
view.set('controller', @get('controller.container').lookup('controller:build')) @get('controller.tab') == 'current' && (!pane || pane.state == 'destroyed')
Ember.run.next => view = @get('controller.container').lookup('view:build')
@set('_outlets', {}) if !@get('_outlets') && !@isDestroyed view.set('controller', @get('controller.container').lookup('controller:build'))
@connectOutlet('pane', view) unless @isDestroyed Ember.run.next =>
@set('_outlets', {}) if !@get('_outlets') && !@isDestroyed
@connectOutlet('pane', view) unless @isDestroyed
)
).observes('controller.repo.isLoaded') ).observes('controller.repo.isLoaded')
ReposEmptyView: Travis.View.extend ReposEmptyView: Travis.View.extend