这是一个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(没有子状态)时,视图会加载。你知道我做错了什么吗?
答案 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>'
})
模板部分是必要的。没有它,它就不起作用。