Angular JS-маршрут, вызывающий бесконечный цикл
Я пытаюсь понять, почему страница не перемещается по шаблону при нажатии. Обновление URL-адресов, и у меня нет ошибок JS. Я считаю, что он загружает файл, но затем он бесконечно загружает контроллер. Я нашел это после того, как положил console.log('test!')
в экземпляр SessionController.
Макет
<div ng-view></div>
Мой просмотр
<a href="/testing"> My link of seriousness </a>
Мой JS
window.MainController = function($scope, $route, $routeParams, $location) {
$scope.$route = $route;
$scope.$location = $location;
$scope.$routeParams = $routeParams;
console.log($route);
console.log($location);
console.log($routeParams);
};
MainController.$inject = ["$scope", "$route"];
window.app = angular.module('web_client', [], function($routeProvider, $locationProvider) {
return $routeProvider.when('/testing', {
templateUrl: '/partials/other_stuff/index.html',
controller: 'MyController'
});
});
window.MyController = function($scope, $http) {
console.log('Infinite Loop!');
};
И в partials/sessions/new.html
у меня большой и яркий:
FOOBAR!
Ответы
Ответ 1
Единственное, что я вижу, - это отсутствие скобок и отсутствующая запятая. Вы можете попробовать:
$routeProvider
.when("/login", {
templateUrl: "sessions/new.html",
controller: SessionsController
})
.otherwise({
redirectTo: "/"
});
Ответ 2
У меня была такая же проблема и раньше, и я думаю, что основной причиной является использование <ng-view>
, который, по-видимому, был использован и в этом случае. Маршрут уже загружает URL-адрес шаблона, поэтому я считаю, что использование директивы ng-view приводит к тому, что шаблон загружается рекурсивно, вызывая бесконечный цикл.
Попробуйте удалить ng-view и вместо этого разместите всю разметку вида непосредственно в шаблоне .html, указанном в шаблоне url маршрута. В качестве альтернативы, если это общий шаблон, попробуйте вместо этого использовать ng-include (например, <div ng-include src="'/path/to/template.html'"></div>
Не забудьте одинарные кавычки вокруг вашего пути, чтобы идентифицировать его как строку, а не ссылку на переменную сферы!).
Ответ 3
Проблема с теми же симптомами
Недавно я решил аналогичную проблему в одном из моих проектов. Я добавил console.log( "Video Page Controller Loaded" ) в контроллер, который я отлаживал. Аналогично, он записывал этот текст, пока я не закрою вкладку.
Мое решение:
Мне было присвоено неправильное имя для файла шаблона.
when('/videos', {
templateUrl: 'templates/video-list.tpl.html',
controller: 'VideoListCtrl'
})
Когда я должен был:
when('/videos', {
templateUrl: 'templates/video-list.html',
controller: 'VideoListCtrl'
})
Ответ 4
Была такая же проблема "бесконечной перезагрузки", и Алекс Джонсон заставил меня подумать. Действительно, если путь шаблонаURL пуст (это мой случай) или неправильный путь, произойдет бесконечная перезагрузка ресурсов.
Для меня решение было простым: я заменил templateURL: ''
на template: ''
.
Ответ 5
У меня была такая же проблема, и в конечном итоге я понял, что на самом деле я не создал частичный html файл, который я ему рассказывал для загрузки в моем app.config - если он не может найти файл шаблона, Angular, похоже, входит в бесконечный цикл функции контроллера.
Ответ 6
Для меня проблема решена после решения проблемы пути и отключения кэширования
Ответ 7
Получена аналогичная проблема с приложением Rack.
Решение было:
use Rack::Static, urls: ["/js", "/css", "/templates"]
Ответ 8
Моя проблема связана с указанием templateUrl без начального "/" не только на моем маршрутизаторе, но и на моих директивах!
Ответ 9
Моя проблема была связана с неправильным URL-адресом шаблона, а затем начал запускать маршрут, соответствующий шаблону URL. Проверьте правильность пути templateUrl
.