首页 文章

从URL AngularJS中删除路由参数

提问于
浏览
1

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

我的网址可以是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;

但没有任何成功

2 回答

  • 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>
    

    那是's all there' d . This tutorial涵盖了开始使用UI-Router所需的基础知识,您还可以在同一站点上找到有关同一主题的提示和技巧 .

    EDIT

    您也可以按照Martin的回答中描述的方式进行操作 .

  • 0

    你不能用 delete 做到这一点 . 该关键字用于从JavaScript对象中删除属性 .

    通常,人们只需添加如下按钮:

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

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

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

    在这种情况下 events 是没有 eventId 参数的路线 .

相关问题