angularjs 루트에는 디폴트 파라미터 값을 설정할 수 있습니까?
AngularJS에서 루트의 파라미터 기본값을 설정할 수 있습니까?이 모든 걸 할 수 있는 방법은 없을까?/products/123그리고./products/같은 경로로 처리됩니까?
다음과 같은 기존 코드를 리팩터링하려고 합니다.
myModule.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/products/', {templateUrl: 'products.html', controller: ProductsCtrl}).
when('/products/:productId', {templateUrl: 'products.html', controller: ProductsCtrl})
}]);
function ProductsCtrl($scope, $routeParams) {
$scope.productId = typeof($routeParams.productId) == "undefined" ? 123 : $routeParams.productId;
}
효과는 있지만, 우아하지는 않아요.더 좋은 방법은 없을까?
이 질문이 오래되었다는 것은 알지만, 그래도:"빈" URL을 기본 productId가 포함된 URL로 리디렉션하면 어떨까요?
myModule.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/products/', {redirectTo: '/products/123'}).
when('/products/:productId', {templateUrl: 'products.html', controller: ProductsCtrl})
}]);
AngularJS에서는 루트 파라미터의 기본값을 사용할 수 없습니다.
단, 루트(in)AngularJS)에는 디폴트 파라미터를 설정할 수 없습니다.
리소스에는 기본 매개 변수가 있을 수 있습니다.
인AngularJS옵션 파라미터를 가진 루트를 사용하는 경우 실제로는2개의 다른 루트가 됩니다.
왜요?
루트는 단순해야 합니다.
경로에서 매개 변수에 대한 정규 표현식 조회를 허용하지 않습니다.
루트는 어플리케이션에서 동작하기 위한 API를 공개하는 것이 아닙니다(Resources와는 다릅니다).루트는 URL을 템플릿 및 컨트롤러와 연결하는 설정일 뿐입니다.따라서 루트가 많을수록 좋습니다.
어떤 루트가 어떤 URL에 맵되는지 명확합니다.
그것은 좀 더 장황하지만 읽기 쉽다.더 복잡한 경로를 가지면 각도가 더 가파른 학습 곡선을 만들 수 있습니다.JS에는 필요 없습니다.
루트가 있는 서버측 프레임워크와는 달리
- AngularJS 루트에는 이름이 없습니다.
- 정의된 루트에서 URL을 구축하지 않습니다.
- 루트 정의에 논리(일명 함수)가 없습니다.
단순한 경로 = 정의하기 위한 라인 수 증가 = 노선 사용 시 골칫거리 감소.
메모: 이 질문은 새로운 루트/리소스의 실장을 사전에 실시하기 위한 오래된 버전의 AngularJS(1.0이라고 생각합니다)에 관한 것입니다.
저도 비슷한 요구 사항이 있었습니다.내가 한 일은 해결할 함수를 만든 것이다.이하와 같은 것
myModule.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/products/', resolveProduct()).
when('/products/:productId', resolveProduct())
}]);
function ProductsCtrl($scope, $routeParams) {
$scope.productId = $routeParams.productId;
}
function resolveProduct() {
var routeConfig = {
templateUrl: 'products.html',
controller: ProductsCtrl,
resolve: {
productId: ['$route', function($route){
var params = $route.current.params;
params.productId = params.productId || 123;
}]
}
}
return routeConfig;
}
url: "/view/:id/:status?" 를 사용하여 옵션 파라미터를 지정할 수 있습니다.
누군가 필요할 것 같아서요
이 질문이 특정 대상인지 확실하지 않습니다.$routeProvider그러나 $stateProvider에서는 다음 방법으로 이 작업을 수행할 수 있습니다.
myApp.config(function($stateProvider) {
$stateProvider
.state('products', {
url: '/:productId',
templateUrl: "/dashboard/products.html",
controller: 'ProductController',
params: {
productId: {
value: "defaultValue",
squash: true // or enable this instead to squash `productId` when empty
}
}
});
});
언급URL : https://stackoverflow.com/questions/12524533/can-angularjs-routes-have-default-parameter-values
'programing' 카테고리의 다른 글
| 이온 프레임워크에 의한 이온 다이렉트 VS 각진 재료 다이렉트 (0) | 2023.03.15 |
|---|---|
| Angular JS의 행에 대체 클래스를 할당하는 방법 (0) | 2023.03.15 |
| ASP.NET 디스플레이 "로드 중...". 업데이트 패널 업데이트 중 메시지 (0) | 2023.03.15 |
| ng-animate : 모델 변경 시 애니메이션 (0) | 2023.03.15 |
| 속성을 기반으로 WooCommerce 제품 쿼리 (0) | 2023.03.15 |