繁体   English   中英

从url AngularJS删除路由参数

[英]Remove route param from url AngularJS

我想从网址中删除路由参数。

我的网址可以是http://host.domain/#/events/eventIdhttp://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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM