我可以设置一个带有可选参数的路径(相同的模板和控制器,但是如果它们不存在,应该忽略一些参数吗?
因此,不是只编写以下两条规则吗?
module.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/users/', {templateUrl: 'template.tpl.html', controller: myCtrl}).
when('/users/:userId', {templateUrl: 'template.tpl.html', controller: myCtrl})
}]);
像这样([这个参数是可选的])
when('/users[/:userId]', {templateUrl: 'template.tpl.html', controller: myCtrl})
//note: this previous doesn't work
我在他们的文档中找不到任何内容。
答案 0 :(得分:238)
答案 1 :(得分:54)
就像@ g-eorge提到的那样,你可以这样做:
module.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/users/:userId?', {templateUrl: 'template.tpl.html', controller: myCtrl})
}]);
您也可以根据需要制作可选参数。
答案 2 :(得分:8)
请在此处查看@jlareau答案:https://stackoverflow.com/questions/11534710/angularjs-how-to-use-routeparams-in-generating-the-templateurl
您可以使用函数生成模板字符串:
var app = angular.module('app',[]);
app.config(
function($routeProvider) {
$routeProvider.
when('/', {templateUrl:'/home'}).
when('/users/:user_id',
{
controller:UserView,
templateUrl: function(params){ return '/users/view/' + params.user_id; }
}
).
otherwise({redirectTo:'/'});
}
);
答案 3 :(得分:2)
实际上我认为OZ_可能有些正确。
如果您有路由'/users/:userId'
并导航到'/users/'
(请注意尾随/),控制器中的$routeParams
应该是1.1.5中包含userId: ""
的对象。所以没有完全忽略参数userId
,但我认为这是你最好的。