使用angularjs和urlserviceprovider在url中用破折号替换空格

使用angularjs和urlserviceprovider在url中用破折号替换空格,angularjs,Angularjs,我以前问过这个问题,尽管有人制作了一个plunker,显示它是有效的。我根本无法让它工作。 普朗克在这里: 我正在尝试创建一个将用破折号替换空格的状态,因此我创建了以下内容: $urlServiceProvider.config.type('productName', { encode: function (str) { return str && str.replace(/ /g, '-'); }, decode: function (str) { return

我以前问过这个问题,尽管有人制作了一个plunker,显示它是有效的。我根本无法让它工作。 普朗克在这里:

我正在尝试创建一个将用破折号替换空格的状态,因此我创建了以下内容:

$urlServiceProvider.config.type('productName', {
    encode: function (str) { return str && str.replace(/ /g, '-'); },
    decode: function (str) { return str && str.replace(/-/g, ' '); },
    is: angular.isString,
    pattern: /[^/]+/
});
应该用破折号替换空格。 上面的plunker可以工作,但在我的项目中不起作用。所以我创建了一个新项目,然后添加了代码。我已经公开了这个项目,所以你可以下载它并在本地测试它。 它位于这里:

有人能帮我看看它,告诉我为什么它不起作用吗?这是一个非常简单的项目(几乎和上面的plunker一样简单)。
请提供帮助:)

注册状态后,您的项目将添加自定义参数类型。在注册状态之前,参数类型必须存在

定义一个新的angularjs模块(我们称之为
testsApp.routerConfig
),它定义了自定义参数类型

function configureApp($locationProvider, $urlServiceProvider) {
    $locationProvider.html5Mode({ enabled: true });

    $urlServiceProvider.config.type('productName', {
        encode: function (str) { return str && str.replace(/ /g, '-'); },
        decode: function (str) { return str && str.replace(/-/g, ' '); },
        is: angular.isString,
        pattern: /[^/]+/
    });
}

angular.module('testsApp.routerConfig', ['ui.router']).config(configureApp);
var testsApp = angular.module('testsApp', ['testsApp.routerConfig', 'testsApp.core']);
确保在注册状态(使用参数类型)的模块之前处理routerConfig模块

本例假设您的状态由名为
testsApp.core