[angularjs] angularjs 경로에 선택적 매개 변수 값이있을 수 있습니까?

선택적 매개 변수 (동일한 템플릿 및 컨트롤러)로 경로를 설정할 수 있지만 일부 매개 변수는 존재하지 않는 경우 무시해야합니까?

따라서 다음 두 규칙을 작성하는 대신 하나만 있습니까?

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가 완전히 무시되지는 않지만 얻을 수있는 최선이라고 생각합니다.


답변