AngularJs如何去除尾部斜杠

时间:2015-02-03 00:18:52

标签: angularjs angular-ui-router angularjs-routing angular-routing

我已经使用2个参数定义了一个url状态,一个是可选的,如下所示:

.state('productsByCategory', {
            url: '/products/:catSlug/:subCatSlug?',
            controller: 'ProductCtrl',
            templateUrl: '/app/products/list.html',
        })

我正在生成这样的链接:

<a ui-sref="productsByCategory({
    catSlug: 'main-category', subCatSlug: 'sub-category'
})">Sub category</a>

这会生成类似href="/products/main-category/sub-category"(完美)

的网址
<a ui-sref="productsByCategory({
    catSlug: 'main-category', subCatSlug: null
})">Main category</a>

这会生成一个类似href="/products/main-category/"的网址 - 带有额外的尾随/

我希望此网址为:href="/products/main-category"

我的问题:如果没有提供subCatSlug,如何删除尾部斜杠?

由于

1 个答案:

答案 0 :(得分:2)

经过深入研究ui-router后,我改变了一点,放弃了试图去除尾随斜线。相反,我只拿了一个slu and并把那个slu put放在ui-sref

.state('productsByCategory', {
        url: '/products/{slug:any}',
        controller: 'ProductCtrl',
        templateUrl: '/app/products/list.html',
    })

any位非常重要,因为它会阻止/进行编码。

<a ui-sref="productsByCategory({
    slug: 'main-category/sub-category'
})">Sub category</a>

这仍会生成类似href="/products/main-category/sub-category"

的网址

现在:

<a ui-sref="productsByCategory({
    slug: 'main-category'
})">Main category</a>

生成href="/products/main-category",没有斜杠:)

---- ---- EDIT

说得太快了。它的作用就是单击浏览器中的链接,但检查/复制生成的href会显示/已编码。我仍然需要像这里建议的解决方法:https://github.com/angular-ui/ui-router/issues/733

UrlMatcher.prototype.format方法中:

result += param.type.name == 'any' ? encoded : encodeURIComponent(encoded);