了解Angular状态提供程序

时间:2014-11-26 16:05:09

标签: angularjs angular-ui-router

我已经购买了一个应用模板,以帮助我了解Angular,并且我正在查看$stateProvider。目前,我有:

$urlRouterProvider
    .otherwise('/app/dashboard-v1');
$stateProvider
    .state('app', {
        abstract: true,
        url: '/app',
        templateUrl: 'tpl/app.html'
    })
    .state('app.dashboard-v1', {
        url: '/dashboard-v1',
        templateUrl: 'tpl/app_dashboard_v1.html',
        resolve: {
            deps: ['$ocLazyLoad',
                function( $ocLazyLoad ){
                    return $ocLazyLoad.load(['js/controllers/chart.js']);
            }]
        }
    })

因此,导航到/app/dashboard-v1会显示信息中心视图。为了摆脱网址中的/app前缀,我从app州的网址中删除了app

$urlRouterProvider
    .otherwise('/dashboard-v1');
$stateProvider
    .state('app', {
        abstract: true,
        url: '/',
        templateUrl: 'tpl/app.html'
    })
    .state('app.dashboard-v1', {
        url: '/dashboard-v1',
        templateUrl: 'tpl/app_dashboard_v1.html',
        resolve: {
            deps: ['$ocLazyLoad',
                function( $ocLazyLoad ){
                    return $ocLazyLoad.load(['js/controllers/chart.js']);
            }]
        }
    })

但是这并没有按预期加载模板 - 我希望它能给出完全相同的结果,但使用/dashboard-v1代替app/dashboard-v1。我做错了什么?

1 个答案:

答案 0 :(得分:3)

您告诉路由提供商转到/ dashboard-v1,但您不再拥有与该网址匹配的任何状态。如果要保留以前的功能,则需要将状态提供程序中的URL更改回/ dashboard-v1。如果你能详细说明你想要达到的目标,我可能会改进我的答案。