선택적 매개 변수 (동일한 템플릿 및 컨트롤러)로 경로를 설정할 수 있지만 일부 매개 변수는 존재하지 않는 경우 무시해야합니까?
따라서 다음 두 규칙을 작성하는 대신 하나만 있습니까?
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
나는 그들의 문서에서 아무것도 찾을 수 없었다.
답변
Angular가 이제 이것을 지원하는 것 같습니다.
최신 (v1.2.0) 문서에서 $routeProvider.when(path, route)
:
path
물음표 ( :name?
) 가있는 선택적 명명 된 그룹을 포함 할 수 있습니다.
답변
@ g-eorge 언급과 같이 다음과 같이 만들 수 있습니다.
module.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/users/:userId?', {templateUrl: 'template.tpl.html', controller: myCtrl})
}]);
선택적 매개 변수가 필요한만큼 만들 수도 있습니다.
답변
여기 @jlareau 답변을 참조하십시오 : https : //.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:'/'});
}
);
답변
실제로 나는 OZ_가 다소 정확하다고 생각합니다.
경로가 '/users/:userId'
있고 '/users/'
(후행 / 참고)로 이동하면 $routeParams
컨트롤러 userId: ""
에서 1.1.5에 포함 된 객체 여야합니다 . 따라서 매개 변수 userId
가 완전히 무시되지는 않지만 얻을 수있는 최선이라고 생각합니다.