Какой метод я должен использовать, чтобы вручную загрузить мой AngularJS?

Я видел следующее:

angular.bootstrap(document, ['TodoApp']);
angular.bootstrap(angular.element("body")[0], ['TodoApp']);

Также в документации AngularJS упоминается об этом, чего я не очень понимаю.

   angular.element(document).ready(function() {
     angular.bootstrap(document);
   });

Есть ли разница между этими методами? В частности, что делает последний метод из Angular Docs? Один лучше использовать, чем другой?

1 ответ

Решение

Они примерно одинаковы, с некоторыми отличиями:


angular.bootstrap(document, ['TodoApp']);

Это будет работать, если ваши скрипты загружены в конце страницы (а не в заголовке).

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

Это работает: plnkr

Это не так: PLNKR


angular.bootstrap(angular.element("body")[0], ['TodoApp']);

Так же, как и раньше, используя body как корень приложения. Он использует селектор, который недоступен в jqLite, поэтому вам нужно включить полный jQuery в приложение.

Я не уверен, в чем преимущество использования body вместо document, но, вероятно, как-то связано с тестированием e2e, как объясняется в этом комментарии

plknr


angular.element(document).ready(function() {
  angular.bootstrap(document);
});

На самом деле он ожидает загрузки DOM, поэтому он будет работать, даже если вы включите свои сценарии в заголовок.

Это в основном так же, как в JQuery $(document).ready(, но используя jqLite "s angular.element,


В последнем примере никакие модули не передаются в функцию начальной загрузки, скорее всего, вам потребуется объявить ваш основной модуль, если только ваше приложение не состоит только из контроллеров в глобальном пространстве имен.

Таким образом, последний вариант будет похож на следующий, чтобы быть похожим на два других:

angular.element(document).ready(function() {
  angular.bootstrap(document, ['TodoApp']);
});

plknr

Я думаю, что большую часть времени самая безопасная ставка использует этот последний подход.

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