【问题标题】:How to send parameter to a GET API in another controller如何将参数发送到另一个控制器中的 GET API
【发布时间】:2017-05-05 02:43:46
【问题描述】:

我有 2 页。第 1 页是信息页面。第 2 页是状态页。每个页面都有自己的控制器(infoController 和 statusController)。在 page1 上提交表单时,我必须调用 Post API,然后导航到 Page2。我还需要连同它一起发送一个 ID。在第 2 页上,我必须使用此 ID 来发出 GET 请求。

POST API
/information
RESPONSE
statusCode: "200"
statusMessage: string
agencyId: "ddsdsa"

GET API
/certification/view/{agencyId}

控制器页面1

function postData() {
            var dataToSend = {
                agencyName: vm.data.agencyName,
                businessLegalName: vm.data.businessLegalName,
            };
            var postPromise = httpService.apiPostRequest ('/information', dataToSend);
            postPromise.then(function(response){
                if(response.data.statusCode == '200'){
                    $state.go ("accsetup.status");
                    Id = response.data.id;
                }
            })  
            .catch(function(error){
                console.log (error);
            });

        }

控制器页面2

function StatusController ($http, httpService) {    
        var vm = this;

        var promise = httpService.apiGetRequest('/certification/view/ddsdsa');
        promise.then(function(response){
            vm.data = response.data;
        })  
        .catch(function(error){
            console.log (error);
        });

    }

【问题讨论】:

  • 那么你遇到了什么问题?
  • @Maria Ines Parnisari - 我需要将 AgencyId: "ddsdsa" 传递给另一个控制器中的 GET API

标签: angularjs angular-ui-router angular-promise


【解决方案1】:

在您的信息页面中,您可以使用$state.go 将数据发送到新视图。

if (response.data.statusCode == '200'){
    var agencyId = response.data.id; // e.g. ddsdsa
    $state.go("accsetup.status", {agencyId: agencyId});        
}

然后在您的状态页面中使用uiRouter$stateParams 服务检索此值。

function StatusController ($http, $stateParams, httpService) {    
    var vm = this;
    var agencyId = $stateParams.agencyId; // ddsdsa
    var promise = httpService.apiGetRequest('/certification/view/' + agencyId );
    // etc
}

为此,您需要更新您的状态定义:

.state('accsetup.status', {
  params: {agencyId: null} // add this
})

【讨论】:

  • $state.go("accsetup.status", {agencyId: AgencyId});拉入价值。但是当它转到 StatusCroller 时,agentId 是未定义的
  • StatusController 中,你能在var agency = ... 行中放一个断点,然后告诉我你在$stateParams 中看到了什么吗?
  • 是的。我这样做了。它显示未定义。以下是我如何定义我的路线
  • .state('accsetup.agencyinfo', { url: '/information/view/:agencyId', templateUrl: '/agencyinfo.html', 控制器: 'InfoController', controllerAs: 'vm' , bindToController: true, params: {agencyId: null} })
  • 嗯?那个状态accsetup.agency.agencyinfo 没有使用StatusController。你需要更新accsetup.status的状态!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多