0

我需要创建动态路由,但我找不到任何解释我如何做到这一点的东西..

如果我的路由提供程序如下所示:

app.config(function($routeProvider) {
$routeProvider
    .when('/', {
        templateUrl:'/index.php',
    controller: 'mainCtrl'
    })
    .when('/search/:tags', {
        templateUrl:'/search/index.html',
        controller: 'searchCtrl'
    })
    .when('/path/one/', {
        templateUrl:'/test/two/partial.html',
        controller: 'testTwoCtrl'
    })
    .when('/path/one/:valueone', {
        templateUrl:'/mickey/mouse/partial.html',
        controller: 'MickeyMouseCtrl'
    })
    .otherwise({
        redirectTo: '/404.html'
    })
});

如何从包含所需信息的 json 对象动态生成它,如下所示:

[
{
    "when": "/",
    "templateUrl": "/index.php",
    "controller": "mainCtrl"
},
{
    "when": "/search/:tags",
    "templateUrl": "/search/index.html",
    "controller": "searchCtrl"
},
{
    "when": "/path/one/",
    "templateUrl": "/test/two/partial.html",
    "controller": "testTwoCtrl"
},
{
    "when": "/path/one/:valueone",
    "templateUrl": "/mickey/mouse/partial.html",
    "controller": "MickeyMouseCtrl"
}
]

我还需要在 XHR 请求中加载这些信息。我想我正在寻找适合这首曲子的东西。这是否可行、可能、可行?

app.config(function($routeProvider, $http) {

$http.get('routingdata.json').success(function(data) {
    for ( key in data ) {
        $routeProvider.when( data[key].when, {
            templateUrl:data[key].templateUrl,
            controller: data[key].controller
        })
    }
    $routeProvider.otherwise({
        redirectTo: '/'
    })    
   }
});
4

0 回答 0