从url AngularJS中删除路由参数

Remove route param from url AngularJS

本文关键字:路由 参数 删除 url AngularJS      更新时间:2023-09-26

我想从url中删除路由参数。

我的URL可以是http://host.domain/#/events/eventIdhttp://host.domain/#/user/userId/events/eventId我的$routeProvider设置为'/events/:eventId?''user/:userId/events/:eventId?'

设置eventId时,我显示弹出窗口。当用户点击关闭按钮时,我想从url中删除eventId。我该怎么做?

附言:我在找这种

delete $route.current.params.eventId;

但是没有任何成功的

使用delete无法做到这一点。关键字用于从JavaScript对象中删除属性。

通常情况下,人们要么添加一个这样的按钮:

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

或者他们使用$state.go命令:

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

在这种情况下,CCD_ 3是没有CCD_ 4参数的路线。

我强烈建议您研究一下UI路由器。它比ngRoute用途广泛得多,提供了上述模块所做的一切。

使用它,当没有eventId时,您可以定义一个单独的状态。

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

类似"/321"的URL将与状态mystate.event匹配,而"//strong>"将解析为mystate。如果你想点击某个东西并从一个状态转到另一个状态,你可以使用ui sref

要转到没有任何参数的状态:

ui-sref="targetState";

进入参数状态:

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

在你的情况下,你可以有这样的东西:

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

这就是它的全部内容。本教程涵盖了开始使用UI路由器所需的基本知识,您也可以在同一网站上找到关于同一主题的提示和技巧。

编辑

你也可以按照马丁的回答来做。