Я присоединился к команде, в которой мы используем AngularJS. У меня есть большой опыт работы с Javascript, но только что начался в AnjularJS. Мы следуем руководству Джона Папы как общий подход. Мы используем Controller как синтаксис везде. В рамках группового обсуждения один вопрос был поднят в контексте удержания контроллеров. И некоторые из членов считают, что все методы должны быть определены как часть прототипа контроллера, а не методы экземпляра (приложенные к этому).Использование методов прототипа для контроллеров
Я много искал, но у меня не было особых преимуществ/недостатков использования этого подхода над методами экземпляра, отличных от 1) наличия общей памяти для функций. 2) Наследование может использоваться для обмена/функциональных возможностей повторного использования в иерархии контроллера (я сомневаюсь, если это общий сценарий в контроллерах AngularJS и если иметь иерархию контроллеров является хорошей идеей.)
То, что мы решили это 1) все методы должны быть добавлены к прототипу контроллера 2) вложенные зависимости должны быть открыты путем присоединения их к этой переменной таким образом, чтобы они были доступны для методов прототипа.
Хотелось бы знать какие-либо явные преимущества и недостатки перспективы AngularJS.
Я получил конкретный ответ от Джона Папы, руководство которого мы следуем, и оно соответствует тому, о чем я думал. https://github.com/johnpapa/angular-styleguide/issues/524
Однако мне все равно нравятся любые другие причины с преимуществом/недостатком. Это связано с тем, что главные проблемы здесь связаны с тем, что контроллер (в частности, функция конструктора контроллера) тонкий. Без движущихся методов для прототипа существуют общие пути для достижения этого?
Я думаю, что мы уже делаем перечисленные здесь вещи, включая перемещение логики в службы. но я не могу перемещать манипуляции с моделью, которую я делаю, когда получаю ответ от службы на службу, мне придется это делать в контроллере. только бизнес-логика, которая даст мне снимки данных, которые должны быть представлены в поле зрения, войдет в сервисы, и мы уже это делаем. Функции общего доступа не означают совместное использование функций между контроллерами, это означает совместное использование функций в нескольких экземплярах контроллера, что обычно имеет дело с контроллерами директив, но не с контроллером, –