Проблемы с $ templateCache, ng-template и кэшированием - angularjs - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь кэшировать html-файлы моего приложения angularjs, следуя этому предложению: https://gist.github.com/ProLoser/6181026.

Я добавляю динамический ключ кеша, такой как ?v=123456790, ко всем html-файлам (кроме тех, которые находятся в каталоге шаблонов, используемом angular ui bootstrap).

Для частичек в их собственных файлах, т. Е. app/views/customer/customer-history.html это работает отлично. Тем не менее, для частичных в форме сценария, например, <script type='text/ng-template' id='customer-history'> шаблон не найден и сделан запрос к серверу, в результате чего 404.

например. localhost:8080/customer-history/?v=1234567890

Я вижу, что рассматриваемые шаблоны находятся в $ templateCache. Те, которые используют ng-template, это просто имя, то есть customer-history, тогда как отдельные файлы находятся по пути app/views/customer/customer-history.html, как вы могли ожидать.

Это большое приложение, поэтому просмотр и перенос их всех в свои файлы и т. Д. Не будет тривиальным. Я искал везде, и я ничего не поднимаю, поэтому я предполагаю, что это что-то простое с тем, как реализован templateCache.

Я использую плагин gulp-templatecache во время процесса сборки, но документы довольно ограничены, и я не думаю, что проблема заключается в этом.

Мое текущее решение состоит в том, чтобы просто пока пропустить ошибочные шаблоны в функции, добавляющей номер версии, декорировав функцию inCache на фабрике $ templateCache и используя ее во время проверки для добавления cacheKey. Но я чувствую, что это своего рода упущение.

1 Ответ

0 голосов
/ 30 мая 2018

Отвечая на мой собственный вопрос здесь.

Поскольку теги сценария являются частью содержащегося html-файла, который загружается в $ templateCache, сценарий уже существует . Когда делается запрос для templateUrl, у него не должно быть приложения для очистки кэша.

Самый простой способ избежать всего этого - просто установить хеш или строку очистки кэша в "templates.js", или какой-либо другой вывод шаблона процесса сборки. Таким образом, весь файл становится недействительным и при необходимости перезагружается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...