为什么ng-options不会填充此下拉菜单?

时间:2018-10-09 23:09:03

标签: angularjs ionic-framework

这是我的json

[{“ year”:“ 1980”,“ Manufacturer”:“ Oldsmobile”,“ Model”:“ Cutlass”,“ Product”:“”},{“ year”:“ 1980”,“ Manufacturer”: “ Oldsmobile”,“ Model”:“ Sierra”,“ Product”:“”},{“ year”:“ 1980”,“ Manufacturer”:“ Toyota”,“ Model”:“ 4Runner”,“ Product”:“ “},{” year“:” 1980“,”制造商“:” Ford“,”型号“:” Fiesta“,”产品“:”“},{” year“:” 1980“,”制造商“:” GMC”,“型号”:“地形”,“产品”:““}}]

和我的HTML

<label class="item item-select">
<span class="input-label">
Select
</span>
<select ng-model="data.make" ng-options="make.Manufacturer for make in 
makes">
</select>
</label>

我可能在这里缺少一些非常基本的东西。可以在控制台的$ scope.data.makes中访问数据。

编辑后添加了我的JavaScript

function ($scope, $stateParams, getProducts) {

$scope.data = {
   "year" : $stateParams.year,
   "make" :""
}


$scope.data.makes =    getProducts.getMakesByYear($scope.data.year).then(function(data){})


}

已编辑以添加我的功能:

var ret = {
    all: function(){

        return $http.get(api_url).then(function(resp){

            return resp.data;
        });

    },

    single: function(id){




        return $http.get(api_url+"search?Id="+id).then(function(resp){

            return resp.data;
        });

    },

  getMakesByYear: function(year){




        return $http.get(car_url+"search?year="+year).then(function(resp){

            return resp.data;
        });


    }
}



ret.all();

return ret;

}]);

1 个答案:

答案 0 :(得分:0)

您的代码没有填充,因为您是将data.makes设置为一个Promise,而不是将其设置为Promise返回的数组

您可以通过在控制器初始化时调用函数来修复它

function ($scope, $stateParams, getProducts) {

$scope.data = {
   "year" : $stateParams.year,
   "make" :"",
   "makes" : []
}

getProducts.getMakesByYear($scope.data.year).then(function(data){
   $scope.data.makes = data;
})
}

还要...确保您使用的是正确的变量data.makes而不是makes

<select ng-model="data.make" ng-options="make as make.Manufacturer for make in data.makes">

如果该函数返回可用的json,则它应该与data.makes一起使用,而不是仅仅与makes一起使用,因为makes不在范围内

相关问题