2015-06-08 5 views
1

У меня есть два выбора, содержимое второго зависит от выбранного значения при первом выборе. Например. Я хочу, чтобы загрузить список компаний (до 2 <select>), который, обеспечивая конкретной услуги (выбирается в 1-й <select>):Как получить доступ к выбранному параметру в контроллере Angular.js

<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, из URL, как этот

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

использовать его во второй <select>

+0

Try: '$ http.get ('http://127.0.0.1:3000/service/'+ $ scope.services [$ scope.selectedService] .id) ' –

+0

получил ошибку в консоли:' $ scope не определен' –

+0

как структурирован ваш контроллер ?, поставьте свой скрипт контроллера –

ответ

0

вы должны следить за selectedService в вашей области контроллера. Сначала инициализируйте значение selectedService на «false», а затем, когда пользователь изменит выбранный параметр, служба получит значение выбора.

После того, как значение selectedService стало иным, чем «false», отобразите второй параметр select /.

ваш 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 []; 
     } 
    }; 
});