【问题标题】:Passing $scope data to $stateProvider.state resolve将 $scope 数据传递给 $stateProvider.state 解析
【发布时间】:2015-03-17 14:49:40
【问题描述】:

我有一个父状态 app.teams.show 将“团队”存储在 $scope.data.team 中。在控制器中,我可以访问 $scope.data.team,因此可以访问 $scope.data.team.organization_id。

如何在解析中访问 $scope.data.team.organization_id?

.state('app.teams.show.games.add', {
    url: '/add',
    templateUrl: 'templates/schedule/games/add.html',
    controller: 'GamesAddCtrl',
    resolve:{
        org: function($http, $scope){
            return $http.get('http://api.example.com/orgs/'+$scope.data.team.organization_id, {cache: true});
        }
    }
})

【问题讨论】:

  • 你不能。看来您需要重新考虑您的架构。
  • 更具体一点,听起来你的应用程序中的 team 概念是一个 resource 应该由 service 而不仅仅是一个控制器范围内的变量。
  • 有什么建议吗?这似乎不是不可能的事情。我使用 $stateParams 来获得团队并且工作正常,这取决于第一个返回的一些信息。如果我将它移到控制器而不是这里,它会起作用,这是一个合理的解决方案吗?

标签: javascript ajax angularjs angularjs-scope angularjs-routing


【解决方案1】:

我认为您想要实现的不是正确的解决方案。
在您的情况下,我可能只是将$scope.data.team.organization_id 作为参数传递给您的状态并在解析块中使用它。

    .state('app.teams.show.games.add', {
        url: '/add/:orgId', // or /add?orgId or :orgId/add
        templateUrl: 'templates/schedule/games/add.html',
        controller: 'GamesAddCtrl',
        resolve:{
            org: function($http, $stateParams){
                return $http.get('http://api.example.com/orgs/'+$stateParams.orgId, {cache: true});
            }
        }

})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-14
    • 2014-03-09
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    • 2020-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多