2013-07-07 16 views
70

我的Angular應用程序允許用戶加載一個項目,當發生這種情況時,我想設置一個包含項目標識的查詢字符串,這樣如果用戶刷新頁面(或者想要鏈接到該頁面),URL已經設置好了(如果Id存在於$ routeParams中,那麼已經存在加載該項目的代碼)。如何在AngularJS中設置一個查詢參數而不用路由?

如何在不引起路由的情況下設置查詢參數?如果路由發生,頁面上還有其他的東西會被重置(包括一個需要重新載入所有數據的插件),所以重要的是查詢參數的改變。

總之,當我加載項123,所有我希望發生的是,從URL變化:

www.myurl.com/#/Items

到:

www.myurl.com/#/Items?id=123

沒有任何routin g發生。

這樣做的最好方法是什麼?

回答

161

在你$routeProvider配置設置reloadOnSearch爲false:

$routeProvider 
    .when('/items', { 
    controller: 'ItemsCtrl', 
    templateUrl: '/templates/items', 
    reloadOnSearch: false 
    }, 
    ... 
); 

,並在你的控制器使用$location.search()設置id PARAM:

$location.search('id', 123); 
+4

設置查詢時,我有一些非常奇怪的行爲string.'''reloadOnSearch:false'''是我的關鍵。 –

相關問題