3

我有一个对象数组,当我用元素填充选择时,它不会预先选择当前活动的对象。如果我更改选择,它会按预期工作,但在页面加载时未选择预选元素。

JS

$scope.license_year_list = [
    {label:"Year of 1991", value:1991}, 
    {label:"Year of 1992", value:1992}  ];

$scope.item = {license_year: {label:"Year of 1992", value:1992}};

HTML

<div ng-controller="MyCtrl">
    <select ng-model="item.license_year" 
            ng-options="y.label for y in license_year_list">
    </select>
</div>

小提琴:http: //jsfiddle.net/eXvH8/

4

2 回答 2

2

Angular 根据实际对象/值的引用检查是否相等。要使您的选择框以默认值开始,请对默认值进行简单的分配。像这样更改您的代码:

HTML:

<div ng-controller="MyCtrl">
<select ng-model="item" ng-options="y.label for y in license_year_list"></select>

<br/><br/><br/>
{{item.license_year}}
</div>

JS:

function MyCtrl($scope) {
$scope.license_year_list = [{label:"Year of 1991", value:1991}, {label:"Year of 1992", value:1992}];

$scope.item = $scope.license_year_list[1];
}
于 2013-09-16T18:35:49.823 回答
1

对象的相等性是通过引用来评估的,所以当你想选择它时,你需要使用完全相同的对象。

$scope.item = {
    license_year: $scope.license_year_list[1]
};
于 2013-09-16T18:34:43.617 回答