В настоящее время я работаю над многоразовым представлением, более конкретным видом подписки на рассылку новостей.Создание и поиск записей в представлениях
Вся эта точка зрения, конечно, позволяет посетителям подписаться на нашу рассылку, поэтому я создал модель NewletterSubscriber. Представление состоит из поля ввода и кнопки, которая вызывает на моем экране следующее действие.
actions:
subscribe: ->
subscriber = @store.createRecord('newsletterSubscriber')
subscriber.set('email', @get('email'))
subscriber.save()
Это приводит к следующей ошибке.
Uncaught TypeError: Cannot call method 'createRecord' of undefined
Что указывает на то, что в моем представлении магазин недоступен, так что было бы правильным решением?
Я думал о создании метода в моем контроллере приложений, и пусть кнопка subscibe запускает действие в этом контроллере. Тем не менее, я не хочу раскалывать код подобного.
Что было бы самым элегантным решением здесь?
Это значит, что мне нужно создать самое действие на всех маршрутах, где я решил использовать это представление? Это приведет к большому дублированному коду. Я не думаю, что у вас есть точка разделения кода, я не хочу разделить код с представлением, потому что я чувствую, что он принадлежит друг другу. – MartinElvar
Действие также может быть определено на любом из родительских маршрутов - я обычно делаю такие действия на ApplicationRoute, чтобы они могли запускаться из любого представления. Вы также можете поместить действия (и получить доступ к хранилищу от) контроллера, если вы предпочитаете повторно использовать подкласс контроллера для этого типа представления. Затем вы можете использовать '{{render" подписку подписчика}} 'или что-то подобное, чтобы вставить эту пару view/controller в любой шаблон. –
Спасибо, Ник, это было что-то вроде того, что я искал! Пожалуйста, сделайте вместо этого ответ. :) – MartinElvar