在Angular UI-Router中解析promise时的范围访问

时间:2016-11-27 13:25:21

标签: angularjs scope angular-ui-router

我对范围和承诺有一个小问题。 我在promise函数之外声明了wiz_ids,并且当promise被解决时我想再次访问它。 我尝试使用bind()但没有运气。

这是我的状态:

state: 'wizard',
config: {

    url: '/wizard',
    templateUrl: 'app/partners/wizard/wizard.html',
    controller: 'WizardController',
    controllerAs: 'vm',
    redirectTo: 'wizard.step1',
    resolve: {
        /* @ngInject */
        promiseData: ['$window', '$location', 'WizardDataService',  function ($window, $location, WizardDataService) {
                var wiz_ids = {
                    'wiz_install_id': $location.search().install_id,
                    'wiz_instance_id': $location.search().instance_id
                };

                return WizardDataService.getWizardData(wiz_ids)
                    .then(function (response) {
                       // How do I access wiz_ids from here? //
                        return response.data;
                    });
            }]
    },
}

1 个答案:

答案 0 :(得分:2)

您可以在then()内返回更复杂的对象。

类似的东西:

return WizardDataService.getWizardData(wiz_ids)
  .then(function(response) {

    var data = {
      wiz_ids: wiz_ids,
      wiz_data: response.data
    }

    return data;
  });

然后在控制器中相应地访问各个属性