2016-04-27 82 views
0

我使用自定義指令在adropdown列表中顯示年份。這是指令的模板。Angularjs ng選項下拉列表中的選定值

template: '<select class="form-control" ng-model="joining.Year" ng-options="year for year in Years"></select>' 

HTML是這樣

<div years-dropdown range="50"></div> 

年是strings.Year場的陣列是字符串類型的我的服務器側model.Selected值被正確地存儲在數據庫中,但是當我重新加載頁面(從數據庫中獲取模型)我在控制器中獲取正確的值,但在下拉列表中未顯示選定的值。

編輯當我改變下拉列表的選擇,並檢查它仍然顯示默認值作爲選擇的(第一選項中選擇屬性)的HTML 還有一兩件事。但是我的範圍對象更新正確。

+0

何時/何/你如何在今年設定爲'scope.joining.Year' –

+0

在頁面加載我取加盟?對象從數據庫中分配並賦值給$ scope.joining。加入對象有一個屬性Year .response.then(function(data){scope = 0; }) – sqlcte

+0

你可以嘗試將選項改爲' ng-options =「年份爲年度年份」' –

回答

1

問題是$scope.joining.YearYears[$index]是不一樣的對象引用。我不相信ngOptions指令使用等價邏輯。因此,這是修復做手工(要把它放到你的.then()功能:

for(var i = 0; i < $scope.Years.length; ++i) { 
    if(angular.equals($scope.Years[i], $scope.joining.Year) { 
     //the fix to get years[i] if it's equal to joining.Year 
     $scope.Years[i] = $scope.joining.Year; 
    } 
} 

//finally, apply data into joining 
angular.extend($scope.joining, data); 
+0

KKKKKKKK我試過了你的答案,雖然沒有奏效,但我開始考慮兩個對象的相等性並在調試你的建議解決方案它發生在我身上$ scope.Years是一個整數數組,我的Year對象是一個數組。我的錯誤是不給代碼部分填充我的年數組。我不知道標記的確切規則回答正確,但你的答案正確地確定了問題,並帶領我朝着正確的方向前進。 – sqlcte