$ urlrouteprovider未检测到具有玉石模板渲染的页面的网址

时间:2016-05-16 17:59:18

标签: angularjs angular-ui-router

我有一个带有令牌的下载链接的网址,如下所示

http://localhost:3000/download/g5ulh69jh8aclhqi

在我的config.js中,我将angular url route provider定义如下

$urlRouteProvider
    .when('/upload/', '/upload')
    .when('/download', '/download')
    .when('/download/', '/download')
    .when('/download/:token', '/download/:token')

    .otherwise(function () {
        var defaultUrl = '/dashboard';
        return defaultUrl;
    });


$stateProvider
    .state('extdownload', {
        url: '/download/',
        abstract: true,
        data: {
            breadcrumbLabel: 'Download url base'
        }
    })
    .state('extdownload.token', {
        url: '/{token:[a-zA-Z0-9]+}',
        templateUrl: '/views/download/download.jade',
        views: {
            '@': {
                controller: 'DownloadController',
                templateUrl: '/views/download/download.jade'
            }
        },
        data: {
            breadcrumbLabel: 'Download page'
        }
    })

但是每当我转到url时,url路由提供程序始终默认为otherwise子句并转到/ dashboard url。网址如下所示

http://localhost:3000/download/g5ulh69jh8aclhqi#!/dashboard

在我的routes.js中,我按如下方式渲染玉文件

app.get('/download/:token', can_access.if_not_logged_in(), function(req, res) {
    res.render('download/download', {
        token: req.params.token
    });
});

我被困在为什么它没有正确检测url提供程序中的url。是因为我正在渲染玉文件吗?对于其他页面,它似乎工作得很好

更新1:

我认为这可能会有所帮助,但我注意到在else子句中$ location.path()是一个空字符串。也许这就是为什么网址不匹配?

{"$$protocol":"http","$$host":"localhost","$$port":3000,"$$path":"","$$search":{},"$$hash":"","$$url":"","$$absUrl":"http://localhost:3000/download/g5ulh69jh8aclhqi","$$replace":false}

更新2:

我添加了$ locationProvider.html5Mode(true);现在检测到URL。但是,stateProvider仍然没有检测到状态。我用$ state检查了我的downloadController。它不会在页面中获取面包屑数据。

另一个问题是,即使正确检测到网址,我也不会看到下面显示的网址,因为我期待它

http://localhost:3000#!/download/g5ulh69jh8aclhqi

0 个答案:

没有答案