@PiloTeZ
...

Можно ли наследовать контроллеры директив в AngularJS и правильно ли это?

Добрый вечер. Только начал разбираться в AngularJS.
Задача: есть виджеты (на подобии гаджетов Windows 7), у всех виджетов есть общий функционал. Нужно выделить его в отдельный класс, что бы можно было использовать одну базу во всех виджетах.
Виджеты реализованы в виде директив.
Моё решение: вынести общий функционал во внешний класс и используя angular.extend или что там расширять класс директивы
  • Вопрос задан
  • 2649 просмотров
Решения вопроса 2
AMar4enko
@AMar4enko
Если у вас действительно много общего кода, то почему нет?
Ответ написан
@PiloTeZ Автор вопроса
...
Решил использовать метод из своего вопроса. Решает все поставленные проблемы, хороших альтернатив не вижу
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
haiku
@haiku
1) Ангулар не предполагает какого-то особого ООП и "наследования", если вы об этом.
2) Наследовать контроллеры очень сомнительная идея. Что конкретно в контроллерах вы собрались наследовать?
3) Напоминаю, что в общем случае, контроллер в MVC нужен всего-лишь в качестве маршрутизатора на какой сервис делигировать выполнения реакции на действия пользователя (что предполагает, что вся ваша логика должна имплементаться в сервисах (factory, value, service, provider, constant). Сервисы гораздо проще затем обвернуть чем напрямую прототипно наследовать (да и вообще new SomeService где-то в контроллере - это не слишком уж хорошо, ни к чему конструкторы экспоузить куда-то наружу за сервисы)
4) В контроллерах следует только наинжектать и подсунуть в скоуп то, что привязано к морде и все.
В общем, лучше не наследовать (ес-сно если вы о прототипном наследовании). При желании инжектнуть $controller в другой контроллер и инстанциировать через него какой-то конкретный контроллер в $scope вашего "наследника" ничто не мешает.
Ответ написан
Комментировать
mrRontgen
@mrRontgen
Scala lover.
Имхо лучше использовать сервис и в нужные директивы инжектить его.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы