如何使用AngularJS在多选输入中预选值

如何使用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

我有以下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-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"