我正在使用ui-router处理简单的角度应用程序。我有几种状态可以选择然后编辑有关发布者的信息。相关配置:
.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-click事件,该事件在我的控制器中触发以下功能:
$scope.selectPublisher = function(publisher) {
publisherService.setSelectedPublisher(publisher);
$state.go('publisher.details', {id: publisher.Id});
};
这很好用,并将我带到publisher.details状态并呈现正确的视图。此时,我的浏览器中的网址指向localhost:1337/superadmin#/publisher/39/details
,其中39是我选择的发布商的ID。
问题是,如果我刷新此页面或尝试通过将URL从应用程序的其他区域粘贴到浏览器中直接导航到该页面,我总是被带回select-publisher
状态。我希望能够配置我的状态,以便我能够根据URL导航到详细状态(或任何其他状态)。
值得注意的是,我确实在我的所有州之后定义了所有路线:
$urlRouterProvider.otherwise('/select-publisher');
我假设由于某种原因这是触发但我无法推断为什么导航在我的应用中使用$state.go
工作,正如我在控制器中指出的那样在我的HTML模板中使用ui-sref directive
,但不能直接导航到网址。
答案 0 :(得分:5)
也许是因为缺少斜线网址:/publisher/{id:int}