2015-07-20 53 views
2

我的問題是ng-selected被設置爲true但選擇不獲取選定NG-選擇不工作

這是我的控制器代碼

.controller("PendingInvoiceCtrl", function($scope, $location, safeApply, dataService) { 
    var userData = dataService.data(); 
    var mauth_token = userData.mauthToken; 
    var mauth_acntId = userData.thisApartment.account; 
    var apt_id = userData.thisApartment.id; 

    $scope.house_list = userData.thisApartment.house; 
    $scope.selectedHouseId = $location.search().houseId; 

    console.log($scope.selectedHouseId); 
}); 

這是我的HTML代碼

<select ng-model="selectedHouseId"> 
     <option ng-repeat="house in house_list" ng-selected="{{ house.house_id == selectedHouseId }}" value="{{ house.house_id }}"> 
      {{ house.house_display_name }} 
     </option> 
</select> 

以下是我的數據格式

{ 
     house:[0]:{ 
      house_display_name: "paras, 101", 
      house_id: "520755" 
     } 
} 

回答

4

ng-屬性不需要額外的大括號。嘗試:

<option ng-repeat="house in house_list" ng-selected="house.house_id == selectedHouseId" ng-value="house.house_id"> 
    {{house.house_display_name}} 
</option> 

更好的方法是使用ng-options可能性select標籤。這將導致:

<select 
    ng-model="selectedHouseId" 
    ng-options="house.house_id as house.house_display_name for house in house_list"> 
</select> 

然後你不需要手動擔心selected屬性的選項,因爲它會選擇一個取決於模型的價值。

4

你的選項標記應該是:

<option ng-repeat="house in house_list" ng-selected="house.house_id == selectedHouseId" ng-value="house.house_id"> 
+0

它的工作,但仍然得到的HTML <期權價值= 「字符串?:385787」>一個額外的選項 我可以隱藏使用<期權價值=「」隱藏>但這是黑客它想要適當的解決方案可以幫助 –

+0

@SiddharthPandey你是什麼意思?你能否檢查一下'house_list.length'與選項的數量是否匹配? – Bwaxxlo

+0

Lenght不是一個問題,它不知道它爲什麼產生相同的結果 –

2

我建議你使用的角度指令NG選項。

<select ng-options="house.house_id as house.house_display_name for house in house_list" ng-model="selectedHouseId"></select>

相關plunker:http://plnkr.co/8LGz5o0d2gDRoRHYr4pQ