404使用AngularJS重定向到包含url参数的页面时

时间:2016-06-02 06:07:18

标签: javascript angularjs angular-routing

所以我试图通过重定向到“http://www.test.com/serie/2”来查看系列的信息页面。

我使用Angular路由,以前在重新加载页面时遇到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来删除网页扩展名。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

ErrorDocument 404 /error.php

我希望有人可以帮我解决这个问题,因为我在其他地方找不到任何答案。

1 个答案:

答案 0 :(得分:1)

您已经传递了serie中的整个ng-click对象,但期望控制器中有一个id。可能需要将其更改为

ng-click="openSerie(serie.id)"

使用$location可以更好地完成将位置路由到新路由的替代方法,因为这两条路由位于同一个基本路径上。

window.location = url更改为$location.path("/serie/" + id)