$stateProvider.state('blogPost', {
url: '/post/:id',
templateUrl: 'blogpost.html',
controller : function($scope, $stateParams){
$scope.postId = $stateParams.id;
}
})
我有一个服务,它会在$ stateParams.id上获取博客内容,但是只有当用户到达blogPost页面时才能执行该服务?关于我的blogPost状态。我知道我不能在那种状态下调用我的服务,因为我无法在我的配置中注入它。
答案 0 :(得分:0)
我假设您的数据来自http呼叫的承诺。这意味着您应该使用resolve
属性。
$stateProvider.state('blogPost', {
url: '/post/:id',
templateUrl: 'blogpost.html',
controller : function($scope, $stateParams, blogposts){
$scope.blogposts = blogposts;
},
resolve: {
blogposts: function(yourBlogDataService, $stateParams) {
return yourBlogDataService.getBlogPosts($stateParams.id)
}
}
})
正如您所知,您只需将blogpost对象作为参数注入控制器:
controller : function($scope, $stateParams, blogposts){
$scope.blogposts = blogposts;
}