У меня возникают проблемы с загрузкой JavaScripts внутри частичного представления в моем Угловом приложении.
Это моя настройка: ui-router
устанавливает ui-view
для запросов в /profile
как <app-home-profile></app-home-profile>
.
Директива appHomeProfile
настраивается следующим образом:
app.directive('appHomeProfile', function() {
return {
restrict: 'E',
templateUrl: 'templates/user/profile.html',
controller: ...,
controllerAs: 'profileCtrl'
}
});
Теперь, внутри файла profile.html
я включаю стандартный HTML и внизу его зависимости от JavaScript:
<script type="text/javascript" src="/javascripts/myScript1.js"></script>
<script type="text/javascript" src="/javascripts/myScript2.js"></script>
Проблема в том, что журналы сервера показывают, что Angular добавляет временную метку к запросам, поэтому не позволяет кэшировать любой из скриптов! Этого не происходит с помощью скриптов зарядил "обычный" путь в head
документа.
GET /javascripts/myScript1.js?_=1437207405398 200 2.356 ms - 22524
GET /javascripts/myScript2.js?_=1437207405399 200 1.873 ms - 29695
Любая помощь в том, как решить эту проблему, оценена!
Спасибо, Ник
В отличие от jQuery, Angular не поддерживает <script>
в запрошенных шаблонах из-за упрощенной реализации jqLite. Это можно зафиксировать так.
Причина, по которой он работает в вашем примере, заключается в том, что вы используете jQuery в своем приложении, поэтому он управляет DOM вместо jqLite. Временные метки в запросах AJAX добавляются, чтобы отключить кеширование браузера, это поведение по умолчанию для jQuery. Его можно отключить с помощью
app.config(function () {
angular.element.ajaxSetup && angular.element.ajaxSetup({ cache: true });
});