Всякий раз, когда мы загружаем .html файлы, обслуживающие некоторый контроллер под углом. angular делает ajax вызов для извлечения этого html.

Как этот кусок кода.

 .state('home', {
              url: '/',
              templateUrl: '/Modules/Signin/signin.html',
              controller: 'SigninCtrl'
          })

Я имею в виду, чтобы спросить при получении signin.html

  • Вызван ли ajax звонок?
  • Или они загружены как обычные ресурсы?
  • Если сделан ajax вызов, где я могу найти некоторую документацию, написанную об этом.
6
Gyanesh Gouraw 17 Дек 2015 в 13:42

3 ответа

Лучший ответ

Когда ваш этот код выполняется, Angular сначала ищет шаблон HTML в $templateCache с помощью id /Modules/Signin/signin.html.

Если он не обнаружит этого в $templateCache, тогда да, Angular сделает AJAX вызов, используя $http, чтобы получить HTML-контент и его. будет загружен как обычный ресурс , который должен находиться по адресу:

http://example.com/Modules/Signin/signin.html

Вы можете проверить в консоли разработчика вашего браузера, что был выполнен вызов AJAX.

Узнайте больше о $ templateCache.

По сути, каждый шаблон get хранится в $templateCache, если он еще не сохранен в кэше. Поэтому, если вы определите следующее в своем index.html или любом другом месте (например, где установлен ваш angular):

<script type="text/ng-template" id="/Modules/Signin/signin.html">
  <p>This is the content of the template</p>
</script>

Теперь, как ваши угловые загрузчики, в вашем $templateCache будут данные с идентификатором /Modules/Signin/signin.html, поэтому теперь ваш код state не будет создавать AJAX, вместо этого он просто загрузит содержимое, определенное выше.

2
Shashank Agrawal 17 Дек 2015 в 11:46

По крайней мере в ui-router (при условии, что представление не находится в templateCache), файлы HTML извлекаются с помощью GET для URL-адреса файла, а не с помощью вызова AJAX конечной точки. В вашем случае это будет GET to <your root URL>/Modules/Signin/signin.html - вы можете увидеть это в инструментах разработки вашего браузера.

1
Mourndark 17 Дек 2015 в 10:48

Я думаю, что звонок сделан, когда я смотрю на свой собственный проект. В элементе inspect имеется вкладка network, при перезагрузке видно, что каждая html-часть загружается отдельно

1
Dennis 17 Дек 2015 в 10:45