激活状态时执行服务或任何功能

时间:2014-12-04 14:28:20

标签: javascript angularjs

    $stateProvider.state('blogPost', {
      url: '/post/:id',
      templateUrl: 'blogpost.html',
        controller : function($scope, $stateParams){
            $scope.postId = $stateParams.id;
      }
    })

我有一个服务,它会在$ stateParams.id上获取博客内容,但是只有当用户到达blogPost页面时才能执行该服务?关于我的blogPost状态。我知道我不能在那种状态下调用我的服务,因为我无法在我的配置中注入它。

1 个答案:

答案 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;
  }