2014-01-25 4 views
12

По какой-то причине, когда у меня есть динамическое свойство в моем маршруте и доступ к этой странице, я застреваю в бесконечном цикле, где эта страница будет постоянно запрашивать себя.Angular Route Infinite Loop

.config(["$routeProvider", "$locationProvider", function($routeProvider, $locationProvider) 
{ 
    $locationProvider.html5Mode(true); 

    $routeProvider.when("/", { 
     templateUrl: "pages/index.html", 
     controller: "IndexCtrl" 
    }).when("/listhome", { 
     templateUrl: "pages/listhome.html", 
     controller: "ListHomeCtrl" 
    }).when("/profile", { 
     templateUrl: "pages/profile.html", 
     controller: "ProfileCtrl" 
    }).when("/newlist", { 
     templateUrl: "pages/newlist.html", 
     controller: "NewListCtrl" 
    }).when("/userlists/:id", { 
     templateUrl: "pages/userlists.html", 
     controller: "UserListsCtrl" 
    }).otherwise({ 
     redirectTo: "/" 
    }); 

Маршрут, на который я смотрю, - это маршрут/userlists /: id. Контроллер для этого маршрута

IS-
TopTenApp.controller("UserListsCtrl", ["$scope","$routeParams", function($scope, $routeParams) 
{ 
    console.log($routeParams); 
    $scope.lists = []; 
}]); 

И когда я достигаю/9/списки пользователей I See-

Object {id: "9"} 

Быть регистрируется каждые 3 секунды и замирает страницу. Это, похоже, происходит всякий раз, когда после местоположения появляется «косая черта» («/ userslists /» вместо «/ userlists»).

Кто-нибудь знает причину этого?

+0

Какой сервер вы используете? как это настроить? –

+0

Еще одна проблема, с которой я столкнулся, заключается в том, что если я попал в/userlists/9 прямо через адресную строку, а не через ссылку на сайт, содержимое html всей страницы будет предупреждено. Кто-нибудь знает, почему это происходит? –

+0

Забудь, что я что-то сказал. Другой логический вопрос - не связанный с угловой. –

ответ

25

Глупый я понял проблему. Я предполагаю, что это имеет смысл, но для URL-адреса шаблона должна быть передняя косая черта перед ним, когда страница представляет собой несколько «каталогов» в глубину.

.config(["$routeProvider", "$locationProvider", function($routeProvider, $locationProvider) 
{ 
    $locationProvider.html5Mode(true); 

    $routeProvider.when("/", { 
     templateUrl: "/pages/index.html", 
     controller: "IndexCtrl" 
    }).when("/listhome", { 
     templateUrl: "/pages/listhome.html", 
     controller: "ListHomeCtrl" 
    }).when("/profile", { 
     templateUrl: "/pages/profile.html", 
     controller: "ProfileCtrl" 
    }).when("/newlist", { 
     templateUrl: "/pages/newlist.html", 
     controller: "NewListCtrl" 
    }).when("/userlists/:id", { 
     templateUrl: "/pages/userlists.html", 
     controller: "UserListsCtrl" 
    }).otherwise({ 
     redirectTo: "/" 
    }); 
}]); 

Надеюсь, это поможет кому-то еще с подобной проблемой.

+0

Идем дальше и отмечаем это как правильно! –

+0

Спасибо! Также убедитесь, что вы также обновляете пути в своих ng-include. – PeterB

+0

Это просто решило мою аналогичную проблему (после того, как я потратил на нее больше времени, чем я хотел бы признать). Благодаря! – kajetons