Javascript 角度ui:ui路由器动态路由和状态

Javascript 角度ui:ui路由器动态路由和状态,javascript,angularjs,requirejs,angular-ui,angular-ui-router,Javascript,Angularjs,Requirejs,Angular Ui,Angular Ui Router,我将动态路线定义为: $urlRouterProvider .when( '/:resource?collection&type&id', [ '$match', '$stateParams', function routeValidator( $match , $stateParams ) { var path = '';

我将动态路线定义为:

$urlRouterProvider
    .when(
        '/:resource?collection&type&id',
        [
            '$match', '$stateParams',
            function routeValidator( $match , $stateParams )
            {
                var path = '';
                angular.forEach($match, function joinner( val , key )
                {
                    if ( angular.isDefined(val) ) path += '/' + val;
                });
                return path;
            }
        ]
    )
    .when( '' , '/about' )
    .when( '/' , '/about' )
    .otherwise( '/404' );
然后是几个州:

$stateProvider
    .state('about',
        {
            "url":          "/about",
            "templateUrl":  "about.tmpl"
        }
    )
    //…
我尝试点击
index.html#/
index.html#/about
,但没有任何状态被调用(随后也没有任何控制器)。但是我的路由是服从的(例如“”被重定向到“/about”)。没有控制台错误和返回预期值(例如对于
index.html#/about
,$match&path=
/about

编辑 这似乎是问题的一部分:

  • 它在JSFIDLE中工作,无需任何要求
  • 它在plunker中不起作用

结果证明我是个白痴:当我从ngRouter切换到ui.router时,我忘了将
ng视图
切换到
ui视图
。使用plunkr:

首先考虑的是如何使用
$locationProvider.hashPrefix(“!”)并链接为
index.html#/关于
Algularjs有时会把hashtags搞得一团糟,我们只是试过了。Nothin':/Sidenote:hashPrefix('!')在#符号:
index.html#之后作为路由的前缀/关于