angularjs - 如何设置选择选项的value属性?

标签 angularjs select ng-options

源 JSON 数据是:

[
  {"name":"Alabama","code":"AL"},
  {"name":"Alaska","code":"AK"},
  {"name":"American Samoa","code":"AS"},
  ...
]

我试试

ng-options="i.code as i.name for i in regions"

但我得到:

<option value="?" selected="selected"></option>
<option value="0">Alabama</option>
<option value="1">Alaska</option>
<option value="2">American Samoa</option>

虽然我期待得到:

<option value="AL">Alabama</option>
<option value="AK">Alaska</option>
<option value="AS">American Samoa</option>

那么,如何获取值属性并去掉“?”项目?

顺便说一句,如果我将 $scope.regions 设置为静态 JSON 而不是 AJAX 请求的结果,空项就会消失。

最佳答案

您第一次尝试的应该可以工作,但 HTML 不是我们所期望的。我添加了一个选项来处理最初的“未选择任何项目”的情况:

<select ng-options="region.code as region.name for region in regions" ng-model="region">
   <option style="display:none" value="">select a region</option>
</select>
<br>selected: {{region}}

上面生成了这个 HTML:

<select ng-options="..." ng-model="region" class="...">
   <option style="display:none" value class>select a region</option>
   <option value="0">Alabama</option>
   <option value="1">Alaska</option>
   <option value="2">American Samoa</option>
</select>

Fiddle

即使 Angular 使用数字整数作为值,模型(即 $scope.region)也将根据需要设置为 AL、AK 或 AS。 (当从列表中选择一个选项时,Angular 使用该数值来查找正确的数组条目。)

第一次学习 Angular 如何实现其“select”指令时,这可能会令人困惑。

关于angularjs - 如何设置选择选项的value属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13803665/

相关文章:

SQL根据另一列的值选择列

css - 在没有字体大小的情况下在 IE 中设置 SELECT 的高度

javascript - 如果特定元素 ng-option 列表与 ng-model 不匹配,如何删除它

angularjs - 如何将 ng-options 与字典样式对象一起使用?

javascript - 输入模型在更改时从 Integer 更改为 String

javascript - 选项卡不存储范围变量

android - Sqlite 返回空值

angularjs - 使用 ng-options 和数组作为值进行选择

angularjs - 在angularJS中拦截ng-click

javascript - Angularjs 正则表达式验证