Detect route/view transition in Ember.js application -
the router of application looks (it's coffeescript):
app.router.map () -> @resource 'conversations', { path: '/' } -> @resource 'conversation', { path: ':conversation_id' } @route 'new' so, in app, have paths /new, /1, /2, etc.
i detect transition /1 /2 make initializations in view (basically, put focus on textarea field). unfortunately, /1 , /2 use same route, seems impossible detect transition.
i tried using didinsertelement in view (as described here) or observing currentpath in controller (as described here). works fine if go /new /1 (different routes) not if go /1 /2.
i found this gist suggesting use statemanager seems outdated (and i'm not sure it's need).
what suggest me do?
edit
it seems setupcontroller called every time decided overload this:
app.conversationroute = ember.route.extend { setupcontroller: (controller, model) -> controller.set 'model', model # here? } and want init method in view called:
app.conversationview = ember.view.extend { init: -> @$('form textarea').focus() } but still can't figure out how make these 2 things work (it's problem because read controller not supposed know view).
thank help!
use didinsertelement view hook , observer.
app.conversationview = ember.view.extend didinsertelement: -> @focusontextarea() modelchanged: (-> @focusontextarea() ).observes('controller.model') focusontextarea: -> @$('form textarea').focus() in case of going /1 /2, route , view not changing. ember least amount of work possible. there's no need re-render view, doesn't. tripped me too, , think it's big gotcha.
also, if override init in view, make sure call @_super().
note: model hook called when landing on page deserialize url, not when transitioning page , changing model instance.
Comments
Post a Comment