在我的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似乎无法做到。
有人遇到过同样的问题吗?
答案 0 :(得分:0)
如果您正在尝试这样做,则无法在Angular中真正设置默认路由参数。
最好的想法可能是检查控制器是否设置了$routeParams.isnew
,如果没有,则将其默认为1.
Angular路由应该相当简单,而不是像apache中的RewriteEngine那样基于模式,所以逻辑应该在你的控制器中。
您的控制器可能如此:
function($routeParams) {
$scope.isNew = ($routeParams.isnew || 1);
}
在你的情况下,你甚至可能没有isnew
参数。使用第一个路径修改现有对象,使用第二个路径创建它们(因此params中obj
的存在定义它是否是新的。)