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

时间:2015-11-13 13:54:55

标签: angularjs angular-ui-router state ui-sref

我的状态路线如下:

.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/

进入医院页面后,我可以使用category或providerName进行搜索并获取医院列表。我正在考虑在这些搜索中修改url(使用ui-sref作为同一页面),因为显示与搜索匹配的url是有意义的。我在这里陷入困境。搜索是一种常见搜索,可以匹配providerName或类别,甚至也可以匹配文本。在这种情况下,我如何导航或如何使用s-ref。我很好,没有使用ui-sref,只是去api或获取数据并更新结果,这很容易实现。但是,我更喜欢更改网址,因为它显示了我们正在寻找的内容。

所以,现在我明白我提供的州路线不合适。

请告诉我一个如何做的方法。

我正在考虑为此添加另一个名为“搜索”的状态,这是有道理的。但是这个的templateUrl将是相同的。如果我的方向正确,请建议。

1 个答案:

答案 0 :(得分:2)

检查以获取详细说明和工作示例

Angular UI-Router more Optional Parameters in one State

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

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

同时检查以下内容: