如何使用AngularJS在多选输入中预选值
我有以下HTML:如何使用AngularJS在多选输入中预选值,angularjs,select,ng-options,Angularjs,Select,Ng Options,我有以下HTML: <div ng-controller="CreateSpreadsheetCtrl as csCtrl" ng-init="csCtrl.init()"> <select multiple="multiple" style="height:100px;" class="form-control" ng-model="csCtrl.Template.BusinessUnitMappings" ng-op
<div ng-controller="CreateSpreadsheetCtrl as csCtrl" ng-init="csCtrl.init()">
<select multiple="multiple" style="height:100px;" class="form-control"
ng-model="csCtrl.Template.BusinessUnitMappings"
ng-options="department as department.LocalizedName for department in csCtrl.DepartmentMasters">
</select>
</div>
在CreateSpreadsheetCtrl.init中,我们正在加载一个名为DepartmentMasters csCtrl.DepartmentMasters的数组,该数组包含一个对象列表,例如{Id:1,Name:Department 1},{Id:2,Name:Department 2}
同样在init方法中,我们加载这个csCtrl.Template对象,其中有一个名为BusinessUnitMappings csCtrl.Template.BusinessUnitMappings的属性,它是DepartmentMaster对象的数组
使用上述代码,它将正确绑定到模型,当您更改选择时,csCtrl.Template.BusinessUnitMappings将正确绑定
但是,当csCtrl.Template.BusinessUnitMappings与现有对象数组一起预加载时,当页面最初加载时,它不会在UI中选择它。将表达式更改为:
工作演示:
var myApp=angular.module'myApp',[];
myApp.controller'MyCtrl',函数$scope{
var ctrl=this;
ctrl.DepartmentMasters=[
{Id:1,姓名:部门1},
{Id:2,姓名:部门2},
{Id:3,姓名:部门3},
{Id:4,姓名:部门4},
{Id:5,姓名:部门5}
];
ctrl.Template={
BusinessUnitMappings:[
{Id:2,姓名:部门2},
{Id:3,姓名:部门3}
]
}
};
您可以通过使用track by department.Id来解决问题,但使用track by department.Id作为语法是有害的。@PankajParkar谢谢您的回复。你能详细解释一下你的意思吗?但它作为语法使用是有害的?看看文档链接@thiag0你检查过我的答案了吗?
ng-options="department as department.Name for department in csCtrl.DepartmentMasters track by department.Id"