2015-07-18 2 views
0

У меня возникают проблемы с загрузкой 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 

Любая помощь в том, как решить эту проблему!

Спасибо, Ник

+0

Проверьте это: http://stackoverflow.com/questions/28694371/angularjs-javascript-not-loading-inside-partial-views – pro

+0

Привет @pro, что на самом деле не ответ вопрос. Мои скрипты * загружаются, единственная проблема связана с тем, что временная метка добавлена ​​в HTTP-запрос, что вызывает проблемы кэширования. –

ответ

1

В отличие от JQuery, Угловая не поддерживает <script> в запрашиваемых шаблонов из-jqLite упрощенной реализации. Он может быть исправлен like that.

Причина, по которой он работает в вашем примере, заключается в том, что вы используете jQuery в своем приложении, поэтому он управляет DOM вместо jqLite. Временные метки в запросах AJAX добавляются, чтобы отключить кеширование браузера, это поведение по умолчанию для jQuery. Это может быть отключена с

app.config(function() { 
    angular.element.ajaxSetup && angular.element.ajaxSetup({ cache: true }); 
}); 
+0

Большое спасибо за объяснение и решение! –

Смежные вопросы