2015-11-25 23 views
2

與參數名告訴用Can angularjs routes have optional parameter values?AngularJS: Routing with URL having optional parameters 問號?應使其可選。它沒有幫助我。網址使用stateProvider多個可選參數angularjs

var app = angular.module('app', ['ui.router','ngRoute']); 

app.config(function ($urlRouterProvider, $stateProvider) { 
    $urlRouterProvider.otherwise('/a'); 
    $stateProvider.state('a', { 
     url: '/a', 
     templateUrl: 'views/a.html' 
    }).state('b', { 
     url: '/b/:code?/:d?', 
     templateUrl : 'views/b.html' 
    }) 
}); 

此網址http://localhost:xx/kk/#/b/1/2適合我。 但http://localhost:xx/kk/#/b(不帶任何參數)和http://localhost:xx/kk/#/b/1不是爲我工作...

你可以看到我使用$stateProvider與UI的路由器。我不想切換到$urlRouteProvider

回答

3

a working plunker

我們需要的是一個叫params : {}設置,它可以處理可選PARAMS:

params: { 
    code: {squash: true, value: null}, 
} 

所以國家確定指標將

.state('b', { 
    url: '/b/:code/:d', 
    templateUrl : 'views/b.html', 
    params: { 
     code: {squash: true, value: null}, 
     d : {squash: true, value: null}, 
    } 
}) 

而這些將工作:

<a href="#/b"> 
<a href="#/b/code1"> 
<a href="#/b/code22"> 
<a href="#/b/code333/d4"> 

檢查這些更多的細節和例子:

而一些更神奇的在這裏:

+0

對不起,我編輯了一下我的問題。如果你不介意,請編輯答案,否則我會在測試後做到這一點,並取得成功。 – Sami

+0

是please.Thank you – Sami

+0

我爲你創建了一個plunker http://plnkr.co/edit/MXb3Eklfrw8fWRuPPk1u?p=預覽,擴展了所有細節的答案 - 加上鍊接中的其他示例...希望這會有所幫助;) –