2013-06-20 51 views
3

目前我正在嘗試使用ng-options指令加載選擇框。NG-Options不允許我設置值

但是我無法改變創建的選項的值,它只是從0-3開始,而我希望這些值與我通過的「eigenschap_id」相同。

所以它應該有23-26,而不是0-3

它在哪裏去錯誤的價值觀?

這是我正在使用的代碼。

控制器:

$scope.eigenschappen.game = categories.Game; 

Jsonstring /對象:

[{"cat_id":6,"cat_name":"Game","eigenschap_name":"RPG","eigenschap_id":23},{"cat_id":6,"cat_name":"Game","eigenschap_name":"Strategie","eigenschap_id":24},{"cat_id":6,"cat_name":"Game","eigenschap_name":"Avontuur","eigenschap_id":25},{"cat_id":6,"cat_name":"Game","eigenschap_name":"Simulatie","eigenschap_id":26}] 

HTML視圖

<select data-ng-options="i.eigenschap_id as i.eigenschap_name for i in eigenschappen.game" ng-model="chosen"></select> 

生成的HTML

<select ng-model="chosen" data-ng-options="i.eigenschap_id as i.eigenschap_name for i in eigenschappen.game" class="ng-pristine ng-valid"> 
    <option value="?" selected="selected"></option> 
    <option value="0">RPG</option> 
    <option value="1">Strategie</option> 
    <option value="2">Avontuur</option> 
    <option value="3">Simulatie</option> 
</select> 

回答

8

當Angular生成HTML選擇選項時,(每個選項元素的)屬性值可能不是您所期望的...它設置如下: 。當使用數組作爲數據源時,該值被設置爲數組索引 。當使用對象作爲數據源時,該值設置爲鍵/屬性名稱

當用戶選擇其中一個選項時,Angular使用索引(或鍵)查找數組(或對象)中的值 - - 該查找的值是該模型設置的值。 (因此,該模型沒有設置爲您在HTML中看到的值!這會導致很多混淆。)

例如,對於數組數據源,Angular會將模型值設置爲數組中的值索引由選定的選項值參數指定。如果您的數據源數組爲[2013,2014,2015],則生成的HTML對於選項元素將具有值0,1,2。如果您選擇第二項,角看起來陣列[1]找到該值2014年,這是什麼型號,然後設置爲

來源:馬克RajCok評論http://docs.angularjs.org/api/ng.directive:select

+0

,我從來不知道關鍵的事實這個價值與模型的實際價值無關。如果有疑問,您可以使用{{the_selects_model}}在屏幕上顯示選擇的模型值。謝謝。 –

相關問題