我想从网址中删除路由参数 .
我的网址可以是http://host.domain/#/events/eventId和http://host.domain/#/user/userId/events/eventId我的$ routeProvider设置为'/events/:eventId?'和'user/:userId/events/:eventId?'
设置 eventId 时,我会显示弹出窗口 . 当用户单击关闭按钮时,我想从url中删除eventId . 我怎么能这样做?
附:我在找这样的东西
delete $route.current.params.eventId;
但没有任何成功
2 回答
我强烈建议你看看UI-Router . 它比ngRoute更加通用,并提供上述模块所做的一切 .
使用它,你可以定义一个单独的状态,当没有 eventId 时 .
像“ /321 ”这样的网址会匹配状态 mystate.event ,而“ / ”会解析为 mystate . 如果你想点击某个东西并从一个状态转到另一个状态,你可以使用 ui-sref .
去没有任何参数的州:
去一个有params的州:
在你的情况下,你可以有类似的东西:
那是's all there' d . This tutorial涵盖了开始使用UI-Router所需的基础知识,您还可以在同一站点上找到有关同一主题的提示和技巧 .
EDIT
您也可以按照Martin的回答中描述的方式进行操作 .
你不能用
delete
做到这一点 . 该关键字用于从JavaScript对象中删除属性 .通常,人们只需添加如下按钮:
或者他们使用
$state.go
命令:在这种情况下
events
是没有eventId
参数的路线 .