2016-04-04 3 views
0

Я пытаюсь реализовать wego API в angularJS. Проблема, с которой я столкнулся, состоит в том, чтобы: Чтобы получить список отелей, мне нужно сделать три вызова API, в результате каждого из которых предоставляется некоторая информация, которая должна быть передана в следующий вызов API. Проблема, с которой я столкнулась, заключается в том, что я могу сделать первый звонок успешно, но не продолжать дальше. Я попытался использовать console.log и обнаружил, что после того, как сделан 2-й вызов API, выполнение не идет на обратный вызов успеха и на обратный вызов ошибки. Вот мой код: -

var app = angular.module('tripochill', []); 

app.controller('MainCtrl', function($scope, $http, $log) { 

    $scope.city = ""; 
    $scope.ts_code = #####; 
    $scope.key = ##########; 

    $("#from").on("change", function() { 
    $scope.checkin = $(this).val(); 
    console.log($scope.checkin); 

    chk = $scope.checkin; 
    day = chk.substr(0, 2); 
    mon = chk.substr(3, 2); 
    yr = chk.substr(6); 
    $scope.checkin = (yr + "-" + day + "-" + mon); 

    console.log($scope.checkin); 
    }); 


    $("#to").on("change", function() { 
    $scope.checkout = $(this).val(); 
    console.log($scope.checkout); 

    chk = $scope.checkout; 
    day = chk.substr(0, 2); 
    mon = chk.substr(3, 2); 
    yr = chk.substr(6); 
    $scope.checkout = (yr + "-" + day + "-" + mon); 

    console.log($scope.checkout); 
    }); 

    console.log($scope.city[0]); 

    $scope.cityNames = function() { 
    $http.get("http://api.wego.com/hotels/api/locations/search?q=" + $scope.city[0] + "&ts_code=" + $scope.ts_code + "&key=" + $scope.key) 
     .then(onSuccessName, onErrorName); 
    }; 
    //Success method 
    var onSuccessName = function(response) { 
    $scope.count = response.data.count; 
    console.log($scope.count); 
    var count = 0; 
    for (var i = 0; i < $scope.count; i++) { 
     if (response.data.country_name == city[2]) { 
     count = i; 
     break; 
     } 
    } 
    console.log(count); 
    console.log(response.data.locations[count].id); 
    id = response.data.locations[count]; 
    $scope.id = id.id; 

    $scope.searchid = function() { 
     console.log("hahahahaha"); 
     $http.get("http://api.wego.com/hotels/api/search/new?location_id=" + $scope.id + "&check_in=" + $scope.checkin + "&check_out=" + $scope.checkout + "&user_ip=direct&ts_code=" + $scope.ts_code + "&key=" + $scope.key) 
     .then(onSuccessSearch, onErrorSearch); 
    }; 
    var onSuccessSearch = function(response) { 
     console.log("2"); 
     console.log(response.data); 
     $scope.search_id = response.data; 
    }; 
    var onErrorSearch = function(response) { 
     console.log("here!!!"); 
     $log.info(response); 
     $scope.info = "Could not retrieve data"; 
    }; 
    }; 
    //Error method 

    var onErrorName = function(response) { 
    $log.info(response); 
    $scope.info = "Could not retrieve data"; 
    }; 

    /*function hotels(search_id){ 
    $scope.hotelList = function() { 
      $http.get("http://api.wego.com/hotels/api/search/"+search_id+"&ts_code=" 
       +$scope.ts_code+"&key="+$scope.key) 
     .then(onSuccessList, onErrorList); 
     }; 
     var onSuccessList = function (response) { 
      $scope.hotels = response.data; 
      console.log($scope.hotels); 
     }; 
     var onErrorList = function (response) { 
      $log.info(response); 
      $scope.info = "Could not retrieve data"; 
     }; 
    }*/ 
}); 

app.controller('SecondCtrl', function($scope) { 

}); 
+0

любая ошибка отображается? –

ответ

0

Потому что вы не звонили $scope.searchid откуда угодно. Поэтому его нужно называть

$scope.searchid = function() { 
    console.log("hahahahaha"); 
    $http.get("http://api.wego.com/hotels/api/search/new?location_id="+$scope.id+"&check_in=" 
       +$scope.checkin+"&check_out="+$scope.checkout+"&user_ip=direct&ts_code="+$scope.ts_code 
       +"&key="+$scope.key) 
     .then(onSuccessSearch, onErrorSearch); 
}; 

$scope.searchid(); // add this line in your code 

var onSuccessSearch = function (response) { 
    console.log("2"); 
    console.log(response.data); 
    $scope.search_id = response.data; 
}; 
+0

не повезло :(( – LIQvID

0

Я вижу, что $scope.searchid никогда не вызывается, попробуйте вызвать $scope.searchid() инициировать второй api вызов.

+0

да, вы, ребята, были правы. но кроме этого мне пришлось переместить второй метод из обратного вызова успеха из первого метода и только вызвать второй метод изнутри обратного вызова. Спасибо @shaishab и thalaivar – LIQvID

Смежные вопросы