2017-02-13 18 views
1

使用angularJS,我需要用來自ajax調用的數據填充select。用ng-options使用AngularJs填充ajax選擇

我有一個名爲「TabPacProfissionalController」的控制器。在這個控制器中,我做了一個ajax調用來獲取json數據('profissionais對象')。 目前爲止這麼好。

我的問題是,我得到從服務器返回的json數據,但我的選擇永遠不會填充。

我在這裏錯過了什麼?

我的AJAX的回報是:

{"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

在http成功函數裏面添加'var self = this;'並且引用'self' –

+0

謝謝阿隆,這是它 –

回答

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_',但是在tabProfCtrl.profissionais'中獲得profissionais.nr的profissionais.nome。元素: