Является ли "$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- Хуки жизненного цикла