Какой метод я должен использовать, чтобы вручную загрузить мой 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, как объясняется в этом комментарии
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']);
});
Я думаю, что большую часть времени самая безопасная ставка использует этот последний подход.