2016-09-22 93 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>