2013-02-19 37 views
1

我有一個簡單下拉列表中選擇:Angular.js從散列/對象

{{x}}    
<select ng-model="x" ng-options="k for k in [1,2,3]"></select> 

容易:{{X}}將與所選擇的值來代替1,2或3。

但如果我的數據看起來像這樣呢?

<select ng-model="x" ng-options="k.a for k in [{a:1},{a:2},{a:3}]"> 

我想要的人,三三兩兩根據選擇,但我通常會「{A:1}」。

嗯.. this表明也許我不會得到我想要的。想法?

回答

3

你只是缺少一塊。

如果你看看docs for ng-options,理解表達可以採用幾種形式。您的表單是:label for value in array。使用這種形式,當你選擇一個選項時,它會給你數組項的整個值,在你的情況下它就像{a: 1}

您可以使用的其他形式之一是select as label for value in array。你粘貼一個額外的表達式,並且結果表達式將被綁定到你的模型上。

因此,像:

ng-options="k.a as k.a for k in [...]" 

然後你會得到所選擇的數組元素的a屬性的值。

Here's a fiddle for you

+0

非常好。我認爲「as xxx」就像「只是一個不同的名字」 - 在SQL中的東西,因此已經瀏覽了它。 – graph 2013-02-19 22:38:40