嵌套状态无法加载

时间:2016-07-12 16:05:50

标签: javascript angularjs angular-ui-router

所以我尝试制作嵌套状态,到目前为止没有运气。

到目前为止我所得到的是

search.route.js

angular.module('myApp')
.config(function ($stateProvider, $urlRouterProvider) {
    $urlRouterProvider.when('/search', '/search/model');

    $stateProvider
        .state('search', {
            abstract: true,
            url: '/search'
        });
});

model.route.js

angular.module('myApp')
.config(function ($stateProvider, $urlRouterProvider) {
    $stateProvider
        .state('search.model', {
            url: '/model',
            templateUrl: 'app/search/model/model.html',
            controller: 'modelController'
        });
});

如果我使用searchModel作为州名,/search/model作为网址,而不是search.model/model则可以正常使用。

修改 好的,我第一次不清楚^^

最初我的代码看起来像这样:

model.route.js

angular.module('myApp')
.config(function ($stateProvider, $urlRouterProvider) {
    $stateProvider
        .state('searchModel', {
            url: '/search/model',
            templateUrl: 'app/search/model/model.html',
            controller: 'modelController'
        });
});

这很好用。当我转到网址/search/model时,html文件和控制器一起加载。

但后来我将其更改为我问题开头可见的代码。现在,当导航到URL时,它不会与控制器一起加载到html中。我没有收到任何错误信息或类似的信息,这些信息可能会让我知道为什么它不会加载。

1 个答案:

答案 0 :(得分:1)

您需要处于抽象状态的<ui-view>才能加载子状态。

尝试:

$stateProvider
    .state('search', {
        abstract: true,
        url: '/search'. 
        template: '<ui-view></ui-view>'
    });

请参阅Nested States docs