2014-02-21 27 views
31

當使用UI-Router的$state.go()時,有沒有方法可以將搜索參數添加到URL?我想在URL中使用具有額外信息的已定義狀態,而不是使用相同配置定義新路線。如何使用AngularJS UI路由器.go()添加搜索參數到URL?

我定義了一個簡單的觀點:

.when('page-with-form', { 
    template: 'views/page-with-form.html', 
    url: '/page-with-form' 
}) 

我想要的路線爲正常,當有人瀏覽到/page-with-form工作,但是當我在應用程序別的東西,將用戶重定向到該路由與一些其他信息/page-with-form?error=true這樣的事情也許是:

$state.go('page-with-form', '?error=true'); 
+0

附加信息可以作爲第二個參數傳遞給對象散列'{}',之後您可以使用'$ stateParams'獲取它。見文檔https://github.com/angular-ui/ui-router/wiki/Quick-Reference#wiki-stategoto--toparams--options – Chandermani

+1

我知道這個,我試圖解決的問題不是讓他們狀態參數,但搜索URI的元素。所以,而不是'page-with-form/error/true',我想'page-with-form?error = true'。那有意義嗎。 – kalisjoshua

回答

43

這將與ui-router解決方案 - working example

$stateProvider 
    .state('MyState', { 
     url: '/page-with-form?error', 
     templateUrl: 'view.page-with-form.html', 
     controller: 'MyCtrl', 
    }) 

這種狀態的導航可能是這樣的:

// href 
    <a href="#/page-with-form"> 
    <a href="#/page-with-form?error=true"> 
    <a href="#/page-with-form?error=false"> 

    //ui-sref 
    <a ui-sref="MyState({error:null})"> 
    <a ui-sref="MyState({error:true})"> 
    <a ui-sref="MyState({error:false})"> 

    // state.go() - in fact very similar to ui-sref directive 
    $state.go('MyState', {error: null}) 
    $state.go('MyState', {error: true}) 
    $state.go('MyState', {error:false}) 

該文件網址參數:

您還可以指定參數的查詢參數,下面一個 '?':

url: "/contacts?myParam" 
// will match to url of "/contacts?myParam=value" 

測試它在行動here

+0

謝謝。這看起來正是我所期待的。我認爲我最終在我的工作中找到了它,但沒有回到這裏發佈答案。所以謝謝你與大家分享。 – kalisjoshua

+0

很高興看到!享受令人驚歎的'ui-router'庫;) –

6

據我所知,你正在尋找可選查詢參數。幸運的是,查詢參數默認是可選的。剛剛嘗試:url: '/page-with-form?error'

.when('page-with-form', { 
    template: 'views/page-with-form.html', 
    url: '/page-with-form?error' 
}); 

並使用$state.go('page-with-form', {error:true});

相關問題