2013-09-16 107 views
3

我有一個對象數組,當我用元素填充select時,它不會預先選擇當前活動的對象。如果我更改了選擇,它將按預期工作,但在頁面加載時未選擇預選元素。AngularJS選擇框當數組是對象時預先選擇

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/

+0

具有角1.1.5+ ['y.label用於通過y.value'在license_year_list軌道Y]( http://jsbin.com/EXukAGo/1/)也可以工作。並且[this](http://jsbin.com/awACUnU/1/)可用於直接處理值。 – Yoshi

回答

1

對象的平等作爲參考評價,所以你需要你當你想選擇它時,請選擇完全相同的對象。

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

這樣做。謝謝。 –

2

根據實際對象/值的參考角度檢查相等性。要使您的選擇框從默認值開始,請執行默認值的簡單分配。改變你的這樣的代碼:

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]; 
} 
+0

Thanks〜$ scope.item定義有點不對,它仍然需要一個對象,其中license_year是您的價值。 –