我已经检查了同样问题的其他解决方案,但没有任何效果。 我在按照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>
正在正确填充ng-model值,但未选择该元素。 请帮忙。
小提琴https://jsfiddle.net/6xy03urf/4/
TIA。
答案 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>