Эмбер создает запись, отличную от текущего контроллера
Поэтому я делаю небольшое игрушечное приложение, которое подарит пользователю несколько импровизированных подсказок для создания комикса. Через некоторое время пользователь сможет загрузить свой законченный комикс.
У меня есть все, что нужно, чтобы подготовить форму для пользователя, чтобы загрузить свой законченный комикс.
Пока что все это один маршрут, контроллер и модель (подсказки). В конце концов, они действительно должны работать с комиксами. В настоящее время все в одном шаблоне, и я поместил форму загрузки в представление:
App.UploadComicView = Ember.View.extend
templateName: "upload_comic"
tagName: "form"
classes: ['form-horizontal']
submit: ->
@get('controller').uploadComic(@get('comicTitle'))
false
Для следующей модели:
App.Comic = DS.Model.extend
title: DS.attr('string')
И я попытался сделать следующее в prompts_controller:
uploadComic: (title) ->
App.Comic.createRecord(title: title)
@get('store').commit()
Однако это пытается отправить действие обновления на контроллер приглашений на серверной части, а не запрос на создание контроллера комиксов.
Похоже, у меня действительно должен быть отдельный контроллер ember / template / model / route для комиксов, но я не уверен, как получить доступ к контроллеру команд в конце вызова для контроллера комиксов, чтобы создать новый комический объект в базе данных. Что еще хуже, мне также действительно нужно отправить выбранные подсказки из текущего контроллера подсказок в новый контекст.
Каков будет лучший способ продолжить?
1 ответ
Когда вы делаете App.Comic.createRecord
это сделает POST
в /comics
с телом запроса {title: 'your title'}
, Это не зависит от того, с какого контроллера / местоположения вы это делаете. Вы говорите, что это идет в другом месте? Пожалуйста, отправьте jsbin, если это так.
Что касается необходимости связи с другими контроллерами / доступа к ним, вы можете использовать needs
объявление внутри другого контроллера.
needs: 'comics'
comicsBinding: 'controllers.comics'
Теперь вы можете получить доступ к контроллеру комиксов через this.get('comics')
внутри него.