我正在使用ui-route的嵌套视图,但是当我尝试访问嵌套模板时出现错误。我的州:
$stateProvider.state('invoice',{
url: '/invoice',
views: {
'@': {
templateUrl: 'views/invoice.v01/paths/invoice.pocketbits.html'
},
'list@invoice': {
templateUrl: 'views/invoice.v01/paths/database.pocketbits.html'
}
}
});
localhost /#/ invoice 工作正常但是当我尝试点击" ui-sref =" list"从里面我得到:
错误:无法解析' list'来自州' invoice'在 Object.transitionTo(angular-ui-router.js:3141)
虽然我的列表模板在发票内。
答案 0 :(得分:1)
实际上,你给ui-sref的字符串应该引用一个州名。
我的意思是你实际上试图进入你未声明的状态list
。
$stateProvider.state('invoice',{
url: '/invoice',
views: {
'@': {
templateUrl: 'views/invoice.v01/paths/invoice.pocketbits.html'
},
'list@invoice': {
templateUrl: 'views/invoice.v01/paths/database.pocketbits.html'
}
}
});
此状态称为“发票”,有两个静态嵌套视图@
和list@invoice
你实际上无法前往list
州。
你可能想要这样的东西:
$stateProvider.state('invoice',{
url: '/invoice',
templateUrl: 'views/invoice.v01/paths/invoice.pocketbits.html'
});
$stateProvider.state('invoice.list',{
url: '/list',
templateUrl: 'views/invoice.v01/paths/database.pocketbits.html'
});
要清楚。在index.html中,您有一个ui-view
。
当您执行州发票时,您将使用发票状态中的模板替换此ui-view。您的发票状态模板里面会有ui-view
。当您转到州invoice.list
时,您会将invoice.list
模板添加到此ui-view
。
根据您的评论,这是您正在查看的用例。
如果您想要两个单独的视图(例如:当您从invoice
切换到list
时,您将替换index.html ui-view的内容),您应该这样做:
$stateProvider.state('invoice',{
url: '/invoice',
templateUrl: 'views/invoice.v01/paths/invoice.pocketbits.html'
});
$stateProvider.state('list',{
url: '/list',
templateUrl: 'views/invoice.v01/paths/database.pocketbits.html'
});
希望它有所帮助。如果您提供有关您尝试实现的内容的更多信息,我可以添加一个案例例,并使其适用于plunker。