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

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

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

В документации AngularJS упоминается это, чего я не понимаю.

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

Есть ли разница между этими методами? В частности, каков последний метод из Угловых документов? Можно ли лучше использовать, чем другой?

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


 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 будет загружен, поэтому он будет работать, даже если вы включите свои скрипты в заголовок.

Это в основном то же самое, что и $(document).ready( jQuery $(document).ready( но с использованием jqLite angular.element .


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

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

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

plknr

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

  • Как я могу получить доступ к переменной вне метода `.then`?
  • Улучшенный дизайн для передачи данных в другие виды ng-view и их сохранение через controllerы
  • Angularjs ng-model не работает внутри ng-if
  • Как я могу проверить службу AngularJS с консоли?
  • AngularJS intellisense не работает на Visual Studio 2015
  • Угловой порядок. Сортировка числа в тексте в ng-repeat.
  • Как указать параметр заголовков для пользовательских действий с угловым $ ресурсом
  • AngularJs - получить список всех зарегистрированных модhive
  • Как поисковые системы работают с приложениями AngularJS?
  • Как написать службу debounce в AngularJS
  • Альтернатива ng-show / -hide или как загрузить только соответствующий раздел DOM
  • Давайте будем гением компьютера.