我正在使用ui路由器开发一个简单的角度应用程序。我有几个州供选择,然后编辑有关出版商的信息。相关配置:
.state('select-publisher', {
url: '/select-publisher',
templateUrl: '/Content/superadmin/src/templates/publishers/publishers.html'
})
.state('publisher', {
abstract: true,
url: 'publisher/{id:int}',
templateUrl: '/Content/superadmin/src/templates/publishers/publisher.html'
})
.state('publisher.details', {
url: '/details',
templateUrl: '/Content/superadmin/src/templates/publishers/details.html'
})
.state('publisher.ad-tags', {
url: '/ad-tags',
templateUrl: '/Content/superadmin/src/templates/publishers/ad-tags.html'
})
.state('publisher.native-ads', {
url: '/native-ads',
templateUrl: '/Content/superadmin/src/templates/publishers/native-ads.html'
})在select-publisher状态中,我有一大串可用发布者。它们中的每一个都绑定到一个ng单击事件,该事件在我的控制器中触发以下函数:
$scope.selectPublisher = function(publisher) {
publisherService.setSelectedPublisher(publisher);
$state.go('publisher.details', {id: publisher.Id});
};它工作得很好,并带我进入publisher.details状态并呈现适当的视图。此时,浏览器中的URL指向localhost:1337/superadmin#/publisher/39/details,其中39是我选择的发行者的ID。
问题是,如果我刷新此页面或试图通过将URL粘贴到应用程序的另一个区域的浏览器中直接导航到它,则总是会回到select-publisher状态。我希望能够配置我的状态,以便能够基于URL导航到details状态(或任何其他状态)。
值得注意的是,在我的所有州之后,我确实定义了一条捕获所有路线:
$urlRouterProvider.otherwise('/select-publisher');我假设出于某种原因,这是被触发的,但我不能解释为什么我的应用程序中使用的导航工作,正如我在控制器中所指出的那样,以及在我的$state.go模板中使用ui-sref directive,而不是通过直接导航到URL。
发布于 2015-02-07 18:18:05
也许是因为缺少了斜杠url:/publisher/{id:int}
https://stackoverflow.com/questions/28384719
复制相似问题