Я новичок в angular и стараюсь научиться упорядочивать свой код, поэтому будущие сотрудники смогут быстро найти их.
Одно правило, которое я знаю, - "Если оно манипулирует DOM, поместите его в директиву", которое я соблюдаю.
Но все же есть моменты, когда я не уверен, куда поместить мои методы, поскольку я могу поместить их в главный контроллер приложения, в контроллер, поставляемый в качестве опции "controller" в директиве или даже внутри функции, которая находится в (опция "ссылка" ).
С фильтрами и услугами это довольно ясно для меня, но с контроллерами и директивами линия становится довольно размытой. Я уже понял, что даже с небольшим приложением я распространяю код и здесь, и это уже запутывает даже для меня. Поэтому я хотел бы получить некоторые подсказки для более эффективного упорядочивания кода.
Итак, я думаю, мой главный вопрос:
1) Есть ли хорошее эмпирическое правило, чтобы узнать, какой код поставить где?
Или, если это слишком абстрактно, вот несколько примеров:
2) У меня есть директива с шаблоном, который я использую только в своем приложении. Что-то должно произойти, когда я нажимаю на элемент. Я уже знаю, что предпочтительнее использовать директиву ng-click для привязки события click в связанной функции.
Но где я должен определить метод, указанный в ng-click?
- A) Основной контроллер приложения.
- B) Функция ссылки на директиву.
- C) Добавьте контроллер в директиву (используя опцию "controller" ) и определите его там.
3) Будет ли ответ на вопрос 2) другим, если я планирую повторно использовать директиву в другом месте?
4) Разный сценарий:
У меня есть кнопка, и при нажатии и перетаскивании она должна перемещать абсолютно несвязанный элемент.
Должен ли я...
- A) Создайте одну директиву и повлияйте на шаблон и поведение на основе переданного атрибута?
- B) Создайте две директивы (один для дескриптора, один для целевого элемента)
Если это так, это снова ставит вопрос о том, куда обращаться с методами для перетаскивания?
Примечания:
Я знаю, что ответы могут немного зависеть от личного мнения, но я надеюсь, что есть некоторые "правила" или "правильные способы сделать это", к которым я могу быть уверен в будущем развитии.
Я не использовал код для краткости.
Если это потребуется для ответа, я был бы рад предоставить его.
Благодарю вас за ваше время.