使用ng-options传递值而不是整个对象

时间:2014-05-16 14:06:44

标签: javascript angularjs

我正在解析.json文件,并在选择中显示所有可用选项:

<div bo-switch-when="dropdown">
  <fieldset>
      <select ng-options="options.text for option in question.body.options" ng-model="question.answer" ></select>
  </fieldset>
</div>

它正在工作,但不是我想要的。我只想拥有这个对象的价值,而不是将整个对象都放到我的模型中。通过Chrome开发工具:

这个对象(如图所示)在我的模型中。 我只想提供文字。

但是当我将ng-options更改为:

ng-options="options.text for option.text in question.body.options"

根本不起作用......

enter image description here

2 个答案:

答案 0 :(得分:10)

根据ngOptions documentation,您可以指定要用作选项值select as label for (key , value) in object的对象的属性  其中select是绑定到模型的属性,label是用作选项标签的属性。 这里不需要ngRepeat。

在你的情况下,只需在select和label中使用.text属性:

 <select ng-options="option.text as option.text for option in question.body.options" ng-model="question.answer" >

答案 1 :(得分:8)

这实际上是Angular开发人员的常见问题。

您可以使用ng-repeat,如下所示:

<select ng-model="question.answer" >
  <option ng-repeat="option in question.body.options" value="{{option.text}}">{{option.text}}</option>
</select>