Angular UI 具有多个可选参数的路由器

Angular UI Router with multiple optional parameters

我有如下州道:

.state("hospitals",
{
    url: "/hospitals/:categoryName/:providerName",
    templateUrl: "app/components/hospital/views/hospitals.html"
})

一般来说,医院页面有所有类别的所有医院和所有提供者(医院)组。此外,从主页我们可以使用类别或提供者导航到医院页面,这将分别根据类别和提供者组显示医院。对于这些,我在锚标记内使用以下指令进行导航。

ui-sref="hospitals({categoryName: category.KeyName})"
ui-sref="hospitals({providerName: provider.KeyName})"

因此,这会在使用 providerName 导航时引入脏斜杠。

hospitals//somehopitalNme

分类没问题

coupons/heart/

进入医院页面后,我可以使用类别或提供者名称进行搜索并获取医院列表。我正在考虑修改这些搜索中的 url(对同一页面使用 ui-sref),因为显示与搜索匹配的 url 是有意义的。我在这里遇到了麻烦。搜索是一种常见的搜索,可以匹配 providerName 或类别,甚至也可以匹配文本。在这种情况下,我该如何导航或如何使用 s-ref。我可以不使用 ui-sref 而只是转到 api 或获取数据并更新易于实现的结果。但是,我更喜欢 url 的更改,因为它显示了我们正在寻找的内容。

所以,现在我明白了,我提供的状态路由不是sui表。

请提供一种方法。

我正在考虑为此添加另一个名为 "search" 的状态,这是有道理的。但是这个的 templateUrl 是一样的。请建议我的方向是否正确。

查看详细说明和工作示例

我们可以使用 params : {} 对象的所谓 squash 设置:

.state("hospitals",
{
    url: "/hospitals/:categoryName/:providerName",
    templateUrl: "app/components/hospital/views/hospitals.html",
    params: {
      providerName: { squash: true },
      categoryName: { squash: true },
    },
})

同时检查这些:

  • Angular js - route-ui add default parmeter