Javascript AngularJS和Edmunds媒体API创建“制造车型年”下拉列表,然后显示车辆图像
--任务——选择下拉列表后获取媒体API(使车型年款) --条件--获取“未定义”错误。是的,能够正确地用Make、Model、Year填充下拉列表,但是当尝试将结果传递给媒体$http.get时,它给出了-“undefined” 棱角分明Javascript AngularJS和Edmunds媒体API创建“制造车型年”下拉列表,然后显示车辆图像,javascript,angularjs,Javascript,Angularjs,--任务——选择下拉列表后获取媒体API(使车型年款) --条件--获取“未定义”错误。是的,能够正确地用Make、Model、Year填充下拉列表,但是当尝试将结果传递给媒体$http.get时,它给出了-“undefined” 棱角分明 // *CONNECT & GET - LIST OF CAR MAKES* // http://api.edmunds.com/api/vehicle/v2/makes?fmt=json&api_key={api key} $http.g
// *CONNECT & GET - LIST OF CAR MAKES*
// http://api.edmunds.com/api/vehicle/v2/makes?fmt=json&api_key={api key}
$http.get('https://api.edmunds.com/api/vehicle/v2/makes?fmt=json&api_key=' + api_key )
.success(function (data) {
$scope.carMakes = data.makes;
console.log($scope.carMakes);
console.log($scope.carMakes[4].name); // Audi
$scope.carModels = $scope.carMakes[4].models;
console.log($scope.carModels[4].name); // A3
$scope.carYears = $scope.carMakes[4].models[4].years[8];
console.log($scope.carYears.year); // 2015
});
$scope.selectedCar.carmake = $scope.carMakes[4]; // <-ERROR HERE - 'undefined'
$scope.edmundsMake = "AUDI";
$scope.edmundsModel = "A3";
$scope.edmundsYear = "2015";
//GET the edmunds media api
//Make Model Year photos
$http.get('https://api.edmunds.com/api/media/v2/' + $scope.selectedCar.carmake + '/' + $scope.edmundsModel + '/' + $scope.edmundsYear + '/photos?title=&category=exterior&provider=oem&width=1280&shottype=S&pagenum=1&pagesize=10&view=basic&api_key='+ api_key +'&fmt=json')
.success(function (data) {
$scope.carImages = data.photos;
});
//*连接和获取-汽车品牌列表*
// http://api.edmunds.com/api/vehicle/v2/makes?fmt=json&api_key={api密钥}
$http.get('https://api.edmunds.com/api/vehicle/v2/makes?fmt=json&api_key=“+api_键)
.成功(功能(数据){
$scope.carMakes=data.makes;
console.log($scope.carMakes);
console.log($scope.carMakes[4].name);//Audi
$scope.carModels=$scope.carMakes[4]。模型;
console.log($scope.carModels[4].name);//A3
$scope.carYears=$scope.carMakes[4]。模型[4]。年[8];
console.log($scope.carYears.year);//2015
});
$scope.selectedCar.carmake=$scope.carMakes[4];//车型>年份
制作
制作
模型
模型
年
年
您需要将此行移动到AJAX请求的回调中,因为它是异步的
$scope.carMakes = data.makes;
$scope.selectedCar.carmake = $scope.carMakes[4];
还要确保初始化selectedCar,$scope.selectedCar={};在此之前的某个时候。$http
是一个异步函数。这意味着在成功函数返回之前,$scope.carMakes
不可用
将代码更改为如下所示:
$http.get('https://api.edmunds.com/api/vehicle/v2/makes?fmt=json&api_key=' + api_key )
.success(function (data) {
$scope.carMakes = data.makes;
$scope.selectedCar.carmake = $scope.carMakes[4];
...
$http.get('https://api.edmunds.com/api/media/v2/' + $scope.selectedCar.carmake + '/' + $scope.edmundsModel + '/' + $scope.edmundsYear + '/photos?title=&category=exterior&provider=oem&width=1280&shottype=S&pagenum=1&pagesize=10&view=basic&api_key='+ api_key +'&fmt=json')
.success(function (data) {
$scope.carImages = data.photos;
});
});
您希望看到什么$scope.carMakes[4]代码>返回。由于它是一个对象,如果我使用$scope.carMakes[4].name;,则需要使用类似于push
method的方法错误表示无法读取未定义的属性“名称”。感谢您的帮助。谢谢你(保罗)(阿齐姆),非常感谢你$scope.selectedCar.carmake=$scope.carMakes[4]。名称//Audiyes,感谢您提醒我们初始化所选汽车。(正在这样做,但总是有助于提醒)
$scope.carMakes = data.makes;
$scope.selectedCar.carmake = $scope.carMakes[4];
$http.get('https://api.edmunds.com/api/vehicle/v2/makes?fmt=json&api_key=' + api_key )
.success(function (data) {
$scope.carMakes = data.makes;
$scope.selectedCar.carmake = $scope.carMakes[4];
...
$http.get('https://api.edmunds.com/api/media/v2/' + $scope.selectedCar.carmake + '/' + $scope.edmundsModel + '/' + $scope.edmundsYear + '/photos?title=&category=exterior&provider=oem&width=1280&shottype=S&pagenum=1&pagesize=10&view=basic&api_key='+ api_key +'&fmt=json')
.success(function (data) {
$scope.carImages = data.photos;
});
});