2014-12-22 21 views
0

我有一個JSON對象,如:AngularJS select元素的值是一個對象,爲什麼?

{ 
    "9000A": { 
     "LOCname":"A Location" 
     "LOCid":"9000A" 
    }, 
    "2700C": { 
     "LOCname":"C Location" 
     "LOCid":"2700C" 
    }, 
    "7600B": { 
     "LOCname":"B Location" 
     "LOCid":"7600B" 
    } 
} 

我需要LOCNAME排序它在選擇列表中顯示,我這樣做是使用自定義過濾器,轉動JSON對象到一個數組:

<select name="location" ng-model="formData.location" ng-options="loc.LOCname for loc in (locations | json2array | orderBy:'LOCname') track by loc.LOCid"> 
    <option style="display:none" value="" disabled selected>Choose a location.</option> 
</select> 

這個偉大的工程我的選擇是這樣的:

<option value="9000A" label="A Location">A Location</option> 
<option value="7600B" label="B Location">B Location</option> 
<option value="2700C" label="C Location">C Location</option> 

我的問題是formData.location現在等於對象:

{"LOCname":"A Location","LOCid":"9000A"} 

預期的結果是formData.location將等於「9000A」

任何人能夠解釋爲什麼發生這種情況,如何解決?

+0

你必須使用formData.location.LOCid現在得到9000A。 –

+0

但是,爲什麼一個對象被分配到一個表單域?我正在選擇一個值爲「9000A」的選項,我不明白該對象是如何分配給formData.location的。 – Craig

回答

0

,因爲u使用ng-options

如果使用NG選項的方式

ng-options="color.LOCid as loc.LOCname for loc in (locations |..." 

可以選擇ID

解釋

color.LOCid爲LOC LOC中的LOC名稱(位置| ...

位置是我們需要迭代

LOC陣列是一個單一的對象 loc.LOCname關於「loc.LOCname」是我們需要顯示

color.LOCid在該值中選擇的值選項

在默認情況下(如果不設置「color.LOCid中」)是在您的情況選擇整個對象的loc

+0

謝謝你的解釋,完美的作品。 – Craig

+0

greate,:) https://docs.angularjs.org/api/ng/directive/select請看看這裏的文檔。關於'ng-options' chreez :)的更多細節 –

+0

@Craig請記住,使用這種形式的ng-options會導致你的