[英]AngularJS: Restangular - How to remove query param from URL
[英]Remove route param from url AngularJS
我想从网址中删除路由参数。
我的网址可以是http://host.domain/#/events/eventId和http://host.domain/#/user/userId/events/eventId我的$ routeProvider设置为“ / events /:eventId?” 和“ user /:userId / events /:eventId?”
设置eventId后 ,我将显示弹出窗口。 当用户单击关闭按钮时,我想从URL中删除eventId。 我该怎么做?
ps我在找这样的东西
delete $route.current.params.eventId;
但没有成功
您不能使用delete
做到这一点。 关键字用于从JavaScript对象删除属性。
通常,人们只是添加一个这样的按钮:
<button ui-sref="events()">Close</button>
或者他们使用$state.go
命令:
$state.go("events", { });
在这种情况下, events
是没有eventId
参数的路由。
我强烈建议您研究UI-Router 。 它比ngRoute更加通用,并提供上述模块所做的一切。
使用它,您可以定义没有eventId时要进入的单独状态。
.state("mystate", {
url: "/",
template: "..."
})
.state("mystate.event", {
url: "/:eventId",
template: "..."
...
});
像“ / 321 ”这样的URL将匹配状态mystate.event ,而“ / ”将解析为mystate 。 如果要单击某项并从一种状态转到另一种状态,可以使用ui-sref 。
进入没有任何参数的状态:
ui-sref="targetState";
进入具有参数的状态:
ui-sref="targetState({ paramName: param });
就您而言,您可能会遇到以下情况:
<div ui-sref="mystate">Click to Close</div>
这就是全部。 本教程介绍了UI-Router入门所需的基础知识,并且您还可以在同一站点上的同一主题上找到提示和技巧。
编辑
您也可以按照Martin的回答中所述的方法进行操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.