Angular ui-router子状态不更新视图

时间:2015-05-20 02:08:27

标签: angularjs angular-ui-router

这是一个angular-ui-route配置。我的问题是关于最后一个, facility 的显示动作。

$stateProvider
    .state('app', {
        url: '',
        abstract: true,
        templateUrl: helper.basepath('app.html'),
        controller: 'AppController',
        resolve: helper.resolveFor('fastclick', 'modernizr', 'icons', 'screenfull', 'animo', 'sparklines', 'slimscroll', 'classyloader', 'toaster', 'whirl')
    })
    .state('app.facility', {
        parent: 'app',
        url: '/facility',
        title: 'Einrichtungen',
        templateUrl: helper.basepath('Facility/Index.html'),
        controller: 'FacilityController',
        resolve: {
            Facilities: ['Facility', function(Facility) {
                return Facility.query().$promise;
            }]
        }
    })
    .state('app.facility.show', {
        url: '/:id',
        title: 'Einrichtung Detail',
        templateUrl: helper.basepath('Facility/Show.html'),
        controller: 'FacilityItemController',
        resolve: {
            Facility: ['Facility', '$stateParams', function(Facility, $stateParams) {
                return Facility.get({id: $stateParams.id}).$promise;
            }]
        }
    })

当我拨打这样的链接时

<a ui-sref=".show({id: facility.id})">{{facility.name}}</a>

URL更改,资源和Show.html模板由ajax加载,但视图不会更改。没有发生错误。

当我将状态重命名为app.facilityShow(没有子状态)时,视图会加载。你知道我做错了什么吗?

2 个答案:

答案 0 :(得分:1)

来自ui-router wiki

  

关于相对ui-sref目标的说明:

     

您也可以在ui-sref中使用相对状态路径,就像传递给state.go()的相对路径一样。您只需要知道路径是相对于链接所在的状态,换句话说就是加载包含链接的模板的状态。

您需要处于app.facility状态才能跟踪ui-sref工作

<a ui-sref=".show({id: facility.id})">{{facility.name}}</a>

答案 1 :(得分:0)

好的,我想我明白了。我已将状态app.facility重命名为app.facility.index并定义了一个新的状态app.facility,它是抽象的,如下所示:

    .state('app.facility', {
        abstract: true,
        url: '/facility',
        template: '<div ui-view></div>'
    })

模板部分是必要的。没有它,它就不起作用。