2016-09-22 104 views
0

我已經檢查了同樣的問題,但沒有任何工作的其他解決方案。 我在按照ng模型選擇下拉值時遇到問題。下面是我使用的代碼 -ng-option沒有從angularjs中選擇使用ng-model選擇?

<select class="form-control" name="adminID" 
    ng-model="hospitalsCtrl.hospital.admin_id" 
    ng-disabled="hospitalsCtrl.hospital.ID" 
    ng-options="admin.ID as admin.email for admin in hospitalsCtrl.adminsList track by admin.ID" required> 
    <option value="">Please Choose</option> 
</select> 

其發電選項像下面 - options being generated

的NG-模型值被正確填充,但沒有選擇的元素。 請幫忙。

搗鼓這個https://jsfiddle.net/6xy03urf/4/

TIA。

+0

您可以創建這個 –

+0

小提琴也許你應該在這裏增加一些JS,順便說一句被hospitalsCtrl.hospital定義? – DMCISSOKHO

+0

添加小提琴,只能在HTML部分添加js,https://jsfiddle.net/6xy03urf/4/ – maddie

回答

2

你應該admin.ID部分來自NG-選項,因爲它是不允許與NG-模型綁定刪除曲目。 嘗試下面的代碼在你的HTML

<select class="form-control" name="adminID" 
    ng-model="hospitalsCtrl.admin_id" 
    ng-options="admin.ID as admin.email for admin in hospitalsCtrl.adminsList" required> 
    <option value="">Please Choose</option> 
</select> 

在你的JS做類似下面

 var app = angular.module('App',[]); 
app.controller('Hospitals-Controller', function(){ 

    console.log("ASA"); 
    var self = this; 

    //self.admin_id = 2 ; 

    self.adminsList = [ 
        { "ID" : 1, 
       "name" : "test 1", 
       "email" : "[email protected]" 

      }, 
      { "ID" : 2, 
       "name" : "test 2", 
       "email" : "[email protected]" 

      }, 
      { "ID" : 3, 
       "name" : "test 3", 
       "email" : "[email protected]" 

      }]; 
         self.admin_id = self.adminsList[1].ID; 
}) 

這裏是棱角分明explanation如何通過

使用select作爲和軌道變化不大

因爲所選選項已在 控制器中以編程方式設置,所以逐個表達式的軌跡也會應用於ngModel va在該示例中,ngModel值是adminsList 1.ID和 按表達式評估爲adminsList 1.ID.id(即, 未定義)。其結果是,該模型值不會對任何 和出現匹配的爲沒有選擇的值

+0

感謝您的回答。如果我刪除「track by」,它會在小提琴中工作,但它不適用於我的應用程序,它的代碼完全相同。 如果我使用ng-repeat選項,它可以正常工作,所以我堅持使用它而不是ng-options。 – maddie

+0

不要使用ng-repeat而不是ng-options! ng-options在下拉比ng-repeat更大的情況下具有很大的靈活性。您是否像設置了答案那樣設置了ng-model對象? –

+0

你是指最後一行? self.admin_id = self.adminsList [1] .ID?這基本上是設置我已經從DB獲得的ID值,但是它沒有選擇所需的值。 – maddie

0

你應該嘗試這樣的:

var self = this; 

self.adminsList = [ 
       { "ID" : 1, 
      "name" : "test 1", 
      "email" : "[email protected]" 

     }, 
     { "ID" : 2, 
      "name" : "test 2", 
      "email" : "[email protected]" 

     }, 
     { "ID" : 3, 
      "name" : "test 3", 
      "email" : "[email protected]" 

     }]; 

      self.admin_id = self.adminsList[1]; 
+0

是否有任何方式來選擇基於Id的選項,而不是整個對象? – maddie

+0

你爲什麼只想要ID?這個解決方案不適合你的需求? – DMCISSOKHO

+0

因爲我沒有完整的對象,所以我只有該字段的id。 – maddie

0

兩個以上提供的都是有效的答案,但因爲某些原因它不工作我的應用程序。使用ng-repeat選項而不是ng-options正在爲我工​​作。發佈代碼可能有助於我的情況:P。 以下是爲我工作的代碼 -

<select class="form-control" name="adminID" ng-model="hospitalsCtrl.hospital.admin_id" 
ng-disabled="hospitalsCtrl.hospital.ID" required> 
    <option value="">Please Choose</option> 
    <option ng-repeat="admin in hospitalsCtrl.adminsList" value="{{admin.ID}}">{{admin.email}}</option> 
         </select>