2013-02-19 40 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