Подтвердить что ты не робот

Ember: как вы получаете доступ к модели с маршрутизатора?

На основании того, что я прочитал (пожалуйста, поправьте меня, если я ошибаюсь), логика, которая обрабатывает, когда модель должна быть сохранена, и где переход следующий должен быть в маршрутизаторе.

Если это так, я столкнулся с некоторой проблемой: Я не знаю, как получить доступ к модели с маршрута.

Это мой контроллер (и журналы консоли "CREATED" после нажатия кнопки "Отправить" ):

App.ScoutsNewController = Ember.ObjectController.extend
  submit: ->
    model = @get('model')
    model.on 'didCreate', ->
      console.log 'CREATED' # I want to  redirect to the index after creation
    model.save()

Я должен переместить эту логику в маршрут, верно? Попробуйте следующее:

App.ScoutsNewRoute = Ember.Route.extend
  model: ->
    App.Scout.createRecord()

  events:
    submit: ->
      # Based on what I've read, the right place to put the code you see in the controller is here. How do I get access to the model?
      # I have tried @get('model'), @get('content')

Примечание. Я понимаю, что событие submit пузырится вверх от представления, до контроллера, а затем, наконец, маршрут, останавливаясь на любом из них, который имеет "отправить". Поэтому, поскольку я хочу, чтобы маршрут обрабатывал его, я удалил контроллер. Я могу видеть любой console.log, выполненный на маршруте, мне просто нужно иметь возможность получить экземпляр модели.

Я использую Ember v1.0.0-rc.5-7-g610589a

Спасибо!

4b9b3361

Ответ 1

Две опции: this.currentModel или this.modelFor(routeName)

Update

Я поговорил с сеньором Алексом Матчнером об этом. Нет никаких планов по this.currentModel уйти в ближайшее время, но он рассматривает this.modelFor(this.routeName) публичный API.

Ответ 2

что должно работать

this.controllerFor('ScoutsNew').get('content')

Ответ 3

this.currentModel на самом деле не одобрен, как описано здесь

но в моей версии Ember (1.11) this.modelFor(this.routeName) возвращает null, так что это то, что сработало для меня

this.controllerFor(this.routeName).get('model')

Ответ 4

Вы также можете использовать this.controller.get('model');, но есть планы удалить контроллер.

До тех пор, пока мы не сможем использовать приведенный выше код для извлечения маршрутов текущей модели