2015-11-12 116 views
1

我想從url中刪除路由參數。從url中刪除路由參數AngularJS

我的網址可以http://host.domain/#/events/eventIdhttp://host.domain/#/user/userId/events/eventId 我的$ routeProvider設置爲'/事件/?EVENTID''user /:userId/events /:eventId?'

eventId設置我彈出顯示。當用戶點擊關閉按鈕時,我想從url中刪除eventId。我如何做到這一點?

p.s.我一直在尋找這樣的事情

delete $route.current.params.eventId; 

但沒有任何成功

回答

0

你不能用delete做到這一點。該關鍵字用於從JavaScript對象中刪除屬性。

通常情況下,人們只是要麼添加一個按鈕這樣的:

<button ui-sref="events()">Close</button> 

或他們使用$state.go命令:

$state.go("events", { }); 

在這些類型的情況下events是你的路線沒有eventId參數。

0

我強烈建議你看看UI-Router。它比ngRoute功能更強大,並提供上述模塊的一切功能。

使用它,您可以定義一個單獨的狀態,以便在沒有eventId

.state("mystate", { 
    url: "/", 
    template: "..." 
}) 
.state("mystate.event", { 
    url: "/:eventId", 
    template: "..." 
    ... 
}); 

像 「/321」 將匹配狀態mystate.event,而 「/」 將解析爲mystate的URL。 如果您想點擊某件物品並從一種狀態轉到另一種狀態,則可以使用ui-sref

要進入狀態,沒有任何PARAMS:

ui-sref="targetState"; 

要進入狀態,使用參數:

ui-sref="targetState({ paramName: param }); 

在你的情況,你可以有這樣的:

<div ui-sref="mystate">Click to Close</div> 

就是這樣。 This tutorial涵蓋了開始使用UI-Router所需的基礎知識,並且您還可以在同一網站上的同一主題上找到提示和技巧。

編輯

你也可以做到這一點在馬丁的回答中描述的方式。