Является ли "$onInit" более эффективным способом, чем "активировать", чтобы активировать "контроллер" в angularJS?

Я новичок в angularJS и хочу реализовать эффективную вещь для моего проекта, но застрял между $onInit ( крючок жизненного цикла) и activate(),

2 ответа

Создание activate() функция внутри вашего контроллера и вызов его напрямую отличается от использования $onInit() Хук жизненного цикла предоставлен AngularJS.

С https://docs.angularjs.org/guide/component:

$onInit() - Вызывается на каждом контроллере после того, как все контроллеры на элементе были сконструированы и инициализированы их привязки (и до функций связывания до и после директив этого элемента). Это хорошее место, чтобы поместить код инициализации для вашего контроллера.

Так что в основном activate() Функция будет вызвана, как только ваш контроллер будет создан. Где как $onInit() Функция будет вызвана после того, как все привязки будут успешно связаны. Таким образом, если вы попытаетесь получить доступ к связанным переменным внутри вашего конструктора, они еще не будут инициализированы.

Использование activate() это вопрос мнения, так как это стиль, рекомендуемый некоторыми авторитетными руководствами по стилю.

С другой стороны, $onInit Крюк жизненного цикла вызывается $compile оказание услуг.

Из документов:

Крючки жизненного цикла

Контроллеры директивы могут предоставлять следующие методы, которые AngularJS вызывает в точках жизненного цикла директивы:

  • $onInit() - Вызывается на каждом контроллере после того, как все контроллеры на элементе были сконструированы и инициализированы их привязки (и перед функциями связывания до и после директив этого элемента). Это хорошее место, чтобы поместить код инициализации для вашего контроллера.

- Справочник по API службы AngularJS $ compile- Хуки жизненного цикла

Другие вопросы по тегам