2014-01-10 3 views
0

В настоящее время я работаю над многоразовым представлением, более конкретным видом подписки на рассылку новостей.Создание и поиск записей в представлениях

Вся эта точка зрения, конечно, позволяет посетителям подписаться на нашу рассылку, поэтому я создал модель NewletterSubscriber. Представление состоит из поля ввода и кнопки, которая вызывает на моем экране следующее действие.

actions: 
    subscribe: -> 
     subscriber = @store.createRecord('newsletterSubscriber') 
     subscriber.set('email', @get('email')) 
     subscriber.save() 

Это приводит к следующей ошибке.

Uncaught TypeError: Cannot call method 'createRecord' of undefined 

Что указывает на то, что в моем представлении магазин недоступен, так что было бы правильным решением?

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

Что было бы самым элегантным решением здесь?

ответ

0

Вы не должны пытаться это сделать в слое «Вид». Вы должны действовать в этом действии на активном маршруте.

Однако я не чувствую, что раскалываю код подобного.

Предполагается разделить код. Так работает MVC Ember.

+0

Это значит, что мне нужно создать самое действие на всех маршрутах, где я решил использовать это представление? Это приведет к большому дублированному коду. Я не думаю, что у вас есть точка разделения кода, я не хочу разделить код с представлением, потому что я чувствую, что он принадлежит друг другу. – MartinElvar

+1

Действие также может быть определено на любом из родительских маршрутов - я обычно делаю такие действия на ApplicationRoute, чтобы они могли запускаться из любого представления. Вы также можете поместить действия (и получить доступ к хранилищу от) контроллера, если вы предпочитаете повторно использовать подкласс контроллера для этого типа представления. Затем вы можете использовать '{{render" подписку подписчика}} 'или что-то подобное, чтобы вставить эту пару view/controller в любой шаблон. –

+0

Спасибо, Ник, это было что-то вроде того, что я искал! Пожалуйста, сделайте вместо этого ответ. :) – MartinElvar

Смежные вопросы