#angularjs #templates
#angularjs #шаблоны
Вопрос:
Я развернул свое приложение angular на 2 веб-серверах с балансировкой нагрузки. Иногда шаблоны загружаются, в других случаях этого не происходит, так как URL неверен — имя виртуального каталога отсутствует.
Просматривая заголовки запроса шаблона, я вижу, что реферер
http://mysite/folderInIIS/VirtualDirectoryName
при поиске шаблонов используется URL-адрес запроса
http://mysite/folderInIIS/Templates/myTemplate.html
что не удается
Если я отредактирую это на:
http://mysite/folderInIIS/VirtualDirectoryName/Templates/myTemplate.html
Я нахожу свой шаблон.
Итак, поскольку это периодически происходит, я думаю, что один из веб-серверов настроен неправильно, и балансировщик нагрузки определит, на какой из них вы перейдете, и увидите ли вы ошибку или нет.
Но что может привести к созданию URL-адреса шаблона без имени виртуального каталога в пути?
Вырезка из моей директивы, показывающая templateUrl:
return {
restrict: 'E',
scope: {split : 'amp;', collapseUp: 'amp;', collapseDown: 'amp;'},
replace: true,
transclude: true,
templateUrl: 'Templates/collapseTemplate.html',
controller: ['$scope', '$rootScope', '$timeout', function ($scope, $rootScope, $timeout) {
var panes = $scope.panes = [];
var splitterControl;
Ответ №1:
Вам нужно определить <base href="..." /> in the
раздел страницы, например:
<base href="http://mysite/folderInIIS/VirtualDirectoryName" />
Конечно, если вы хотите, чтобы он работал как в локальной среде тестирования (без виртуального каталога), так и на сервере (в виртуальном каталоге), вам необходимо динамически вычислять базовый href.
Например, в .NET MVC вы можете использовать:
<base href="@Url.Content("~")" />
Надеюсь, это поможет.