源 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>
即使 Angular 使用数字整数作为值,模型(即 $scope.region)也将根据需要设置为 AL、AK 或 AS。 (当从列表中选择一个选项时,Angular 使用该数值来查找正确的数组条目。)
第一次学习 Angular 如何实现其“select”指令时,这可能会令人困惑。
关于angularjs - 如何设置选择选项的value属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13803665/