使用$ routeProvider传递其他参数

时间:2014-06-25 09:18:26

标签: angularjs angular-ui-router angularjs-routing

在我的AngularJS应用程序中,我有一个模板和一个控制器,我可以通过2个不同的URL访问:

$routeProvider.when('/site/contents/:obj/:parent/:isnew?', {
    templateUrl: '/partials/site/data.html',
    resolve: {
        loggedin: checkLoggedin
    }
});

$routeProvider.when('/site/contents/new-obj', {
    templateUrl: '/partials/site/data.html',
    resolve: {
        loggedin: checkLoggedin
    }
});

第二个路由应该静态设置一个参数isnew = 1,就像在apache中使用RewriteRule一样,但是查看文档https://docs.angularjs.org/api/ngRoute/provider/ $ routeProvider似乎无法做到。

有人遇到过同样的问题吗?

1 个答案:

答案 0 :(得分:0)

如果您正在尝试这样做,则无法在Angular中真正设置默认路由参数。

最好的想法可能是检查控制器是否设置了$routeParams.isnew,如果没有,则将其默认为1.

Angular路由应该相当简单,而不是像apache中的RewriteEngine那样基于模式,所以逻辑应该在你的控制器中。

您的控制器可能如此:

function($routeParams) {
    $scope.isNew = ($routeParams.isnew || 1);
}

在你的情况下,你甚至可能没有isnew参数。使用第一个路径修改现有对象,使用第二个路径创建它们(因此params中obj的存在定义它是否是新的。)