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
Спасибо!
Ответы
Ответ 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');
, но есть планы удалить контроллер.
До тех пор, пока мы не сможем использовать приведенный выше код для извлечения маршрутов текущей модели