Поэтому я пытаюсь перейти на информационную страницу для сериала, перенаправляя, например, " http://www.test.com/serie/2 ".
Я использую Угловую маршрутизацию и ранее имел проблему с получением 404, когда я перезагружал страницу. Теперь это работает, но теперь он дает одно перенаправление на страницу сери. Вот мой код до сих пор.
Домашний вид:
<div class="col col-md-10">
<div class="col col-md-3" ng-repeat="serie in series | limitTo: 10">
<serie-card
id="serie.id"
name="serie.name"
genres="serie.genres"
img="serie.image.medium"
lang="serie.language"
rating="serie.rating"
status="serie.status"
ng-click="openSerie(serie)">
</serie-card>
</div>
</div>
Контроллер для директивы serie-card:
app.controller('serieCardController', ['$scope', '$location', function($scope, $location){
$scope.openSerie = function(id){
var url = rootUrl+"/serie/" + id;
window.location = url;
}
}]);
Мой файл app.js
app.config(['$routeProvider', '$locationProvider',
function($routeProvider, $locationProvider) {
$routeProvider.
when('/home', {
templateUrl: 'templates/home.php',
controller: 'homeController'
}).
when('/serie/:id',{
templateUrl: 'templates/serie.php',
controller: 'serieInfoController'
}).
when('/login',{
templateUrl: 'templates/login.php',
controller: 'loginController'
}).
otherwise({
redirectTo: '/home'
});
$locationProvider.html5Mode(true);
}]);
Я не знаю, помогает ли она чему-либо, но также добавил.htaccess, чтобы удалить расширение страницы URL-адреса.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
ErrorDocument 404 /error.php
Надеюсь, кто-то может помочь мне в этом вопросе, так как я не мог найти ответы нигде.
Вы прошли весь serie
объект в ng-click
но ожидаете идентификатор в контроллере. Вероятно, нужно изменить это на
ng-click="openSerie(serie.id)"
Альтернативно для маршрутизации местоположения на новый маршрут лучше всего использовать $location
поскольку два маршрута находятся на одном базовом пути.
Измените window.location = url
на $location.path("/serie/" + id)
.
window.location
?