AngularJS选择框当数组是对象时预先选择

时间:2013-09-16 18:30:03

标签: angularjs

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

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/

2 个答案:

答案 0 :(得分: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];
}

答案 1 :(得分:1)

通过引用来评估对象的相等性,因此当您想要选择对象时,需要使用完全相同的对象。

$scope.item = {
    license_year: $scope.license_year_list[1]
};