如何访问Angular.js控制器中的选定选项

时间:2015-06-08 23:15:56

标签: javascript angularjs

我有两个选择,第二个内容必须取决于首先选择的选定值。例如。我想加载提供特定服务的公司列表(到第二<select>)(在第一<select&gt;中选择):

<div ng-controller="GetCompaniesByService as class">
    <select ng-options="service.name for service in class.services"  ng-model="selectedService"></select> 
    Chosen service_id: {{ selectedService.id }}
    <select ng-options="company.name for company in class.companies"  ng-model="selectedCompany"></select> 
  </div>

如何从模型中访问控制器当前selectedService.id值? Е.g我需要通过ajax动态加载数据,来自这样的网址

$http.get('http://127.0.0.1:3000/service/'+selectedService.id)

在第二个<select>

中使用它

1 个答案:

答案 0 :(得分:0)

您必须在控制器范围内查看selectedService。首先将selectedService的值初始化为&#34; false&#34;,然后当用户更改选项时,selectedService将获得select的值。

一旦selectedService的值变得与&#34; false&#34;显示第二个选择/选项。

你的HTML:

<div ng-controller="GetCompaniesByService as class">
    <select ng-options="service as service.name in class.services"  ng-model="selectedService"></select> 
Chosen service_id: {{ selectedService.id }}
    <select ng-options="company as company.name in class.companies"  ng-model="selectedCompany" ng-show="selectedService"></select> 
</div>

你的控制器:

app.controller('GetCompaniesByService',function($scope){
    $scope.class = {};                  //initialize the class object
    $scope.class.services = [...];      //your first $http request
    $scope.selectedService = false;
    $scope.class.companies = function(){
        if(selectedService){
            return $http.get('http://127.0.0.1:3000/service/'+selectedService.id)
             .success(function(data){return data;})
             .error(function(error){return [];});
        }
        else{
            return [];
        }
    };
});