ng-selected
应该在<option>
标签中使用,而不是在<select>
标签中。仔细看看它的文档和例子。
因为select
指令对所选选项的确定是基于ngModel
. 因此,一旦您删除ng-selected="c.CollegeName == collegeSelection.CollegeName"
,您的代码应该可以工作。
我创建了一个非常简单的plunk来演示select
指令中的“选定”功能。
更多细节:
AngularJS 使用ngModel
指令来启用模型和 UI 元素之间的“双向数据绑定”。
在“选择”的情况下,collegeSelection
您指定的模型<select ng-model="collegeSelection" ...>
是选定的项目。这意味着如果用户从页面上的下拉列表中选择一个项目,collegeSelection
将被设置为该项目;并且,如果您collegeSelection
在 javascript 代码中设置了一个项目,AngularJS 将确保<option>
选择相应的项目。
假设您的控制器中有以下代码:
$scope.colleges = [
{id: 0, name: 'a'},
{id: 1, name: 'b'},
{id: 2, name: 'c'}
];
$scope.collegeSelection = $scope.colleges[0];
HTML 看起来像:
<select ng-model="collegeSelection" ng-options="c as c.name for c in colleges"></select>
就是这样!如果您运行代码,将选择大学数组中的第一所大学。
请记住选择的选项,无论是因为用户在 UI 上选择了一个项目,还是您在 javascript 中选择了一个项目collegeSelection
。
这就是双向数据绑定的工作原理。