Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS和Edmunds媒体API创建“制造车型年”下拉列表,然后显示车辆图像_Javascript_Angularjs - Fatal编程技术网

Javascript AngularJS和Edmunds媒体API创建“制造车型年”下拉列表,然后显示车辆图像

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

--任务——选择下拉列表后获取媒体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.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;
    });
});