Ответ 1
После долгих часов тестирования... оказалось, что в моем файле index.html у меня был
<ui-view />
который будет использоваться маршрутизатором angular ui и заменяет его на это, сделал трюк.
<ui-view></ui-view>
Я создаю приложение yoman с angular -генератором.
Библиотеки js, включенные в мой файл index.html:
<script src="bower_components/jquery/dist/jquery.js"></script>
<script src="bower_components/modernizr/modernizr.js"></script>
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/angular-ui-router/release/angular-ui-router.js"></script>
<script src="bower_components/d3/d3.js"></script>
<script src="bower_components/select2/select2.js"></script>
<script src="bower_components/angular-ui-select2/src/select2.js"></script>
Проблема возникает только в том случае, если jquery включен до angular, и это не происходит, если это после него.
Проблема как состояния заголовка заключается в том, что я получаю "ПРЕДУПРЕЖДЕНИЕ: Пытался загрузить angular более одного раза" в консоли, и приложение не может инициализировать.
Есть ли у кого-нибудь подсказки, почему это может случиться?
У меня есть одно ng-приложение, я включаю angular только один раз... и все. Не похоже, что это связано с конфигурацией, так как изменение положения script исправляет ее.
У вас есть какие-то подсказки?
Кто-нибудь знает, могу ли я настроить, чтобы включить порядок скриптов? Поскольку я использую angular -генератор, я установил это с помощью usemin, чтобы включить скрипты bower. Интересно, есть ли способ указать, в какой порядок включить скрипты.
Это файл bower.json для моего проекта:
{
"name": "<name>",
"version": "0.0.0",
"dependencies": {
"angular": "1.2.15",
"json3": "~3.2.6",
"es5-shim": "~2.1.0",
"angular-ui-router": "~0.2.10",
"modernizr": "~2.8.1",
"d3": "~3.4.6",
"angular-ui-select2": "~0.0.5"
},
"devDependencies": {
"angular-mocks": "1.2.15",
"angular-scenario": "1.2.15"
}
}
Я пытался искать в google без везения. Спасибо заранее!
Обновление 1:
Я только выяснил, что если я включу скрипты таким образом, angular не будет включен дважды, и он всегда будет загружен первым.
<!-- build:js scripts/vendor.js -->
<script src="bower_components/angular/angular.js"></script>
<!-- bower:js -->
<script src="bower_components/jquery/dist/jquery.js"></script>
<script src="bower_components/modernizr/modernizr.js"></script>
<script src="bower_components/angular-ui-router/release/angular-ui-router.js"></script>
<script src="bower_components/d3/d3.js"></script>
<script src="bower_components/select2/select2.js"></script>
<script src="bower_components/angular-ui-select2/src/select2.js"></script>
<!-- endbower -->
Не лучшее решение, но по крайней мере на данный момент... В любом случае, я хотел бы иметь все внутри bower: js tags.
После долгих часов тестирования... оказалось, что в моем файле index.html у меня был
<ui-view />
который будет использоваться маршрутизатором angular ui и заменяет его на это, сделал трюк.
<ui-view></ui-view>
Для меня это произошло, когда я неправильно ссылался на свой взгляд на моих маршрутах.
У меня было:
.when('/route', {
templateUrl: 'views/myPage.html',
controller : 'myCtrl'
})
но мой взгляд был назван views/mypage.html
Сообщение об ошибке не то, что я ожидаю. Я бы ожидал отсутствие ошибки представления.
Это случилось со мной также с .NET и MVC 5, и через некоторое время я понял, что внутри метки: ngview
снова включается в сценарии раздела с вами. Чтобы решить проблему на стороне сервера, я верю частичное представление. Что-то вроде:
public ActionResult Index()
{
return View();
}
public ActionResult Login()
{
return PartialView();
}
public ActionResult About()
{
return PartialView();
}
Я получал такое же предупреждение, и это было из-за порядка включенных файлов, а также используемой версии.
Чтобы устранить вышеуказанное предупреждение, я повторно включил файлы в следующем порядке:
jquery.js
jqueryui.js
angular.js
Примечание.. Вы должны добавить тег jquery
script до angularjs
, чтобы угловые символы могли заменить jqLite
на jquery
.
Кроме того, мой код работал с AngularJS v1.2.0
, но не с более высокой версией angular. Поэтому проверьте совместимость с jquery и совместимостью с угловыми версиями.
Да, я решил свои проблемы, отсортировав порядок JS script на странице html.
Если поставить angular js script в первом порядке, этого больше не будет.
Это очень странно.
Спасибо.
Я столкнулся с подобной проблемой при работе с электронным приложением. Я включил angular.min.js на странице index.html, и каждый раз, когда я приходил на эту страницу, количество раз, которое ранее использовалось для предупреждения, использовалось для получения double... например, 1,2,4,8,16 и т.д. Итак, после обновления 4/5 приложение используется для супер медленного. Решение, которое я нашел, это.. Вместо включения angular.min.js с тегом script используйте require ('./path/angular.min.js');
это будет загружать файл только один раз.
Согласно документации node
Кэширование #
Модули кэшируются после первого раза загрузки. Это означает (среди прочего), что каждый вызов, требуемый ('foo'), получит точно тот же объект, который был бы возвращен, если он разрешит один и тот же файл.
Несколько вызовов, требующих ('foo'), не могут вызывать выполнение кода модуля несколько раз. Это важная функция. С его помощью могут быть возвращены объекты с "частично выполненными", что позволяет загружать транзитивные зависимости, даже если они будут вызывать циклы.
tools visual studio ---- просто комментируйте файл angularjs, как этот`
<script src="~/Scripts/angular.min.js"></script>
</section>`