2014-01-12 3 views
2

Я начал задумываться об этом после того, как прочитал дискуссию о том, где поставить логику событий, в контроллер или на маршрут. Где вы должны обрабатывать (определенные) события? https://github.com/emberjs/ember.js/pull/1209Какая логика должна идти в контроллерах и что должно идти по маршрутам?

В общем, что такое соглашение/правило для помещения чего-либо в контроллер или маршрут?

ответ

3

Мне нравится думать о нем, как интересно, в каком контексте вы будете нуждаться в действие в действиях пузырь вниз следующим образом:.

контроллер -> текущий маршрут -> Родитель маршрут -> приложение маршрут.

В общем случае, если вы можете видеть только, что ваше действие используется в контексте контроллера, то оно, вероятно, принадлежит. Если маршрут связан с несколькими контроллерами (например, если вы используете «render» в своих шаблонах), то действие принадлежит этому маршруту. Если несколько маршрутов могут вызвать действие, действие принадлежит родительскому.

На практике это часто напоминает запись на контроллере, а затем перемещение на маршруты, когда вы понимаете, что это необходимо.

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

Например, согласно этой школе мысли:

Если действие связано с маршрутизацией (может быть один, который заканчивается с «transitionTo»), то она принадлежит к маршрутизатору. Если это не касается маршрутизации (например, просто выберите элемент как активный), то он принадлежит контроллеру.

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

+0

Спасибо большое! Я также нашел логику, что если она перейдет, она должна быть в маршруте, иначе в контроллере немного нечетко. ваш подход имеет для меня большой смысл, спасибо! – Dennis

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