2015-09-16 3 views
0

Я присоединился к команде, в которой мы используем AngularJS. У меня есть большой опыт работы с Javascript, но только что начался в AnjularJS. Мы следуем руководству Джона Папы как общий подход. Мы используем Controller как синтаксис везде. В рамках группового обсуждения один вопрос был поднят в контексте удержания контроллеров. И некоторые из членов считают, что все методы должны быть определены как часть прототипа контроллера, а не методы экземпляра (приложенные к этому).Использование методов прототипа для контроллеров

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

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

Хотелось бы знать какие-либо явные преимущества и недостатки перспективы AngularJS.

Я получил конкретный ответ от Джона Папы, руководство которого мы следуем, и оно соответствует тому, о чем я думал. https://github.com/johnpapa/angular-styleguide/issues/524

Однако мне все равно нравятся любые другие причины с преимуществом/недостатком. Это связано с тем, что главные проблемы здесь связаны с тем, что контроллер (в частности, функция конструктора контроллера) тонкий. Без движущихся методов для прототипа существуют общие пути для достижения этого?

ответ

0

из поделившись памяти для функций

Почему вы хотите поделиться функции? Я не вижу никакого преимущества.

Это связано с тем, что основные проблемы здесь связаны с тем, что контроллер (в частности, функция конструктора контроллера) тонкий.

Если это проблема, вместо того, чтобы думать, что общие функции объекта, решит это. Попробуйте реорганизовать вас контроллеры: по словам их имени, у них должна быть простая задача => Контроль. Они не занимаются этим, просто спрашивают.

  • Извлечь логику в сервисах.
  • Не манипулируйте dom в контроллерах, используйте директивы (вы вводите $ document?).
  • Извлечение простых форматирования/презентаций в фильтрах.
+0

Я думаю, что мы уже делаем перечисленные здесь вещи, включая перемещение логики в службы. но я не могу перемещать манипуляции с моделью, которую я делаю, когда получаю ответ от службы на службу, мне придется это делать в контроллере. только бизнес-логика, которая даст мне снимки данных, которые должны быть представлены в поле зрения, войдет в сервисы, и мы уже это делаем. Функции общего доступа не означают совместное использование функций между контроллерами, это означает совместное использование функций в нескольких экземплярах контроллера, что обычно имеет дело с контроллерами директив, но не с контроллером, –

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