Как обработать переход маршрутизатора с контроллера Ember.js?

Как мне обрабатывать переход к другому представлению после успешного сохранения нового объекта проекта? Если моя проверка пройдет успешно, я хочу зафиксировать @транзакцию и перейти к представлению индекса проектов.

Контроллер:

DA.ProjectsController = Em.ArrayController.extend
  createProject: (project) ->
    @transaction = DA.store.transaction()
    p = @transaction.createRecord(DA.Project, project)
    validation_errors = p.validate()

    if validation_errors
      DA.displayError validation_errors
    else
      @transaction.commit()

      ### What should be here to transition the route/view? ###
      router.transitionTo('projects') # Like this?
      DA.get('router').send('projects') # This?
      ###################################################

Маршрутизатор:

DA.Router = Em.Router.create
  location: 'history'

  root: Em.Route.extend
    index: Em.Route.extend
      route: '/'
      redirectsTo: 'projects'

    projects: Em.Route.extend
      route: '/projects'
      index: Em.Route.extend
        router: '/'
      connectOutlets: (router) ->
        router.get('applicationController').connectOutlet('projects', DA.Project.find())
      showProject: Em.Route.transitionTo('project')

    project: Em.Route.extend
      route: '/projects/:project_id'
      connectOutlets: (router, project) ->
        router.get('applicationController').connectOutlet('project', project)

    newProject: Em.Route.extend
      route: '/projects/new'
      connectOutlets: (router) ->
        router.get('applicationController').connectOutlet('projectsNew')

    doProjects: (router) ->
      router.transitionTo('projects')
    doProjectsNew: (router) ->
      router.transitionTo('newProject')

person David    schedule 22.08.2012    source источник


Ответы (1)


Я думаю, что, возможно, разобрался со своим вопросом, но мне бы хотелось услышать мнение других, если есть более подходящий способ сделать это. Вот что у меня получилось:

DA.ProjectsController = Em.ArrayController.extend    
  createProject: (project) ->
    @transaction = DA.store.transaction()
    p = @transaction.createRecord(DA.Project, project)
    validation_errors = p.validate()

    if validation_errors
      DA.displayError validation_errors
    else
      @transaction.commit()
      DA.get('router').transitionTo('projects')
person David    schedule 22.08.2012
comment
Я думаю, это хорошо, но вместо статического доступа к маршрутизатору у вас есть свойство target, которое его представляет. - person sly7_7; 23.08.2012