我想从网址中删除路由参数。
我的网址可以是 http://host.domain/#/events/eventId 和 http://host.domain/#/user/userId/events/eventId 我的$ routeProvider设置为&#39; / events /:eventId?&#39; 和&#39; user /:userId / events /:eventId?&#39; < / em>的
设置 eventId 后,我会显示弹出窗口。当用户单击关闭按钮时,我想从url中删除eventId。我怎么能这样做?
P.S。我在寻找像这样的东西
delete $route.current.params.eventId;
但没有任何成功
答案 0 :(得分:0)
您无法使用delete
执行此操作。该关键字用于从JavaScript对象中删除属性。
通常,人们只需添加如下按钮:
<button ui-sref="events()">Close</button>
或他们使用$state.go
命令:
$state.go("events", { });
在这种情况下events
是没有eventId
参数的路线。
答案 1 :(得分:0)
我强烈建议你研究UI-Router。它比ngRoute更加通用,并提供上述模块所做的一切。
使用它,您可以定义一个单独的状态,以便在没有 eventId 时进行。
.state("mystate", {
url: "/",
template: "..."
})
.state("mystate.event", {
url: "/:eventId",
template: "..."
...
});
像“ / 321 ”这样的网址会匹配状态 mystate.event ,而“ / ”会解析为 mystate 即可。 如果您想点击某个内容并从一种状态转到另一种状态,则可以使用 ui-sref 。
去没有任何参数的州:
ui-sref="targetState";
去一个有params的州:
ui-sref="targetState({ paramName: param });
在你的情况下,你可以有类似的东西:
<div ui-sref="mystate">Click to Close</div>
这就是它的全部内容。 This tutorial涵盖了开始使用UI-Router所需的基础知识,您还可以在同一网站上找到有关同一主题的提示和技巧。
修改强>
您也可以按照Martin的回答中描述的方式进行。