ng-option未从angularjs中选择使用ng-model选择?

时间:2016-09-22 04:56:36

标签: angularjs drop-down-menu

我已经检查了同样问题的其他解决方案,但没有任何效果。 我在按照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-model值,但未选择该元素。 请帮忙。

小提琴https://jsfiddle.net/6xy03urf/4/

TIA。

3 个答案:

答案 0 :(得分:3)

您应该从ng-options中删除admin.ID部分的曲目,因为它不允许与ng-model绑定。 在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" : "abc@abc.com"

            },
            { "ID" : 2,
                "name" : "test 2",
              "email" : "abc2@abc.com"

            },
             { "ID" : 3,
                "name" : "test 3",
              "email" : "abc3@abc.com"

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

以下是来自Angular的explanation关于如何使用select as和track by

的信息
  

因为已在编程中以编程方式设置了所选选项   控制器,track by表达式也应用于ngModel   value。在示例中,ngModel值为adminsList 1。ID和   track by expression计算为adminsList 1。ID.id(即   未定义)。因此,模型值不与任何匹配    并且显示为没有选定值

答案 1 :(得分:0)

你应该这样试试:

var self = this;

self.adminsList = [
                { "ID" : 1,
            "name" : "test 1",
          "email" : "abc@abc.com"

        },
        { "ID" : 2,
            "name" : "test 2",
          "email" : "abc2@abc.com"

        },
         { "ID" : 3,
            "name" : "test 3",
          "email" : "abc3@abc.com"

        }];

          self.admin_id = self.adminsList[1];

答案 2 :(得分: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>