Эмбер создает запись, отличную от текущего контроллера

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

У меня есть все, что нужно, чтобы подготовить форму для пользователя, чтобы загрузить свой законченный комикс.

Пока что все это один маршрут, контроллер и модель (подсказки). В конце концов, они действительно должны работать с комиксами. В настоящее время все в одном шаблоне, и я поместил форму загрузки в представление:

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') внутри него.

Другие вопросы по тегам