2017-02-13 2 views
1

С угловымJS мне нужно заполнить выбор данными, поступающими из вызова ajax.Заполнять выбор с помощью ajax с помощью ng-опций с помощью AngularJs

У меня есть контрольный элемент под названием «TabPacProfissionalController». В этом контроллере я делаю вызов ajax для получения данных json («объект профилирования»). Пока все хорошо.

Моя проблема заключается в том, что я получаю данные json, возвращающиеся с сервера, но мой выбор никогда не заполняется.

Что мне здесь не хватает?

Мой Аякса возвращение:

{"results":[{"nr":"8","nome":"AAAAAAAAAAAA"}, 
{"nr":"17","nome":"BBBBBBB"}, 
{"nr":"27","nome":"BBBBBAAAAA"}, 
,{"nr":"1004","nome":"CCCCCCCCC"}]} 

HTML

 <div class="form-group"> 
      <label for="paciente.texto.sexo" class="col-sm-2 control-label">Profissional:</label> 
      <div class="col-sm-10" ng-controller="TabPacProfissionalController as tabProfCtrl"> 
       <select class="form-control" ng-model="selectedProf" ng-options="nome for (nr,nome) in tabProfCtrl.profissionais"> 
        <option value=''>Select an option</option> 
       </select> 
      </div> 
     </div> 

JS:

app.controller('TabPacProfissionalController', function($http) { 
     this.profissionais = {}; 
     $http.get('/getStaff?tipoProf=1').then(function(response){ 
        this.profissionais=response.data.results; 
        console.log(this.profissionais.toString()); 
     },function(error){ 
      console.log(error); 
     }); 
     }); 
+1

Добавить 'var self = this;' и ссылку на 'self' внутри функции успеха http –

+0

Спасибо, Alon, Это было –

ответ

1

Если вы хотите ярлык, чтобы отобразить nome свойство и значение быть nr собственность попробуйте следующее:

<div class="form-group"> 
    <label for="paciente.texto.sexo" class="col-sm-2 control-label">Profissional:</label> 
    <div class="col-sm-10" ng-controller="TabPacProfissionalController as tabProfCtrl"> 
     <select ng-model="tabProfCtrl.selectedProf" ng-options="profissionais.nr as profissionais.nome for profissionais in tabProfCtrl.profissionais"> 
      <option value="">Select</option> 
     </select>   
    </div> 
</div> 

(ключ, значение) обозначение, которое вы используете, предназначено для источников данных объекта, например, если вы хотите перебирать свойства одного объекта, а не набор объектов, которые вы, кажется, получаете от звонка $http.

Чтобы увидеть разобранный ответ сервера, вы можете использовать angular.fromJson(response.data)

Вот plunker демонстрирует функциональность.

+0

Извините. Это не работает. Я получаю новую ошибку: Ошибка: [ngOptions: iexp] Ожидаемое выражение в форме '_select_ (as _label_)? для (_key _,)? _ value_ in _collection_ ', но получил' profissionais.nome for profissionais.nr в tabProfCtrl.profissionais '. Элемент: